# Print numbers from 1 to 10

This might be a very simple challenge, but I am surprised it hasn't been done on code-golf yet:

Print all Integers from 1 to 10 inclusive in ascending order to standard output.

Your output format can be whatever your language supports. This includes arbitrary separators (commas, semicolons, newlines, combinations of those, etc., but no digits), and prefixes and postfixes (like [...]). However, you may not output any other numbers than 1 through 10. Your program may not take any input. Standard loopholes are disallowed.

This is , so shortest answer in bytes wins!

• Related (duplicate?) – Luis Mendo Jul 21 '16 at 9:07
• If the only change is hard-coding a single parameter then that falls under the banner of "trivial change", and by the standards of this site still counts as a dupe. – Peter Taylor Jul 21 '16 at 9:54
• @PeterTaylor The other challenge has a huge problem with the integer limits though. The way it's specified every TC language that doesn't have 64-bit integers needs to implement them. (And that affects quite a lot of languages.) – Martin Ender Jul 21 '16 at 10:01
• @xnor Quite frankly, I'd rather close the other challenge as a duplicate of this one. The requirement pretty much ruins it. – Dennis Jul 21 '16 at 14:09
• I can't believe every single of the (currently) 71 answers assumes the base should be decimal… – Skippy le Grand Gourou Jul 22 '16 at 15:05

# C, 36 bytes

main(i){while(printf("%d ",i++)<3);}

This works because the loop terminates after the first 2 digit number.

• There's no mention of being able to pass in parameters to the function. – Ash Burlaczenko Jul 21 '16 at 13:27
• @AshBurlaczenko What are you talking about? This is a standard technique in golfing to initialise an int to 1. You don't need to pass any command line arguments. In fact, doing so will cause the program to produce the wrong output. – xsot Jul 21 '16 at 13:39
• @AshBurlaczenko By consensus we have agreed that programs may assume they will not be called with unnecessary input (in this case, no additional command line arguments, beyond the program itself). That means i here will always be 1 when this program is run. Did you mean something else? – FryAmTheEggman Jul 21 '16 at 13:41
• Sorry, I've not written C but assumed it's default value would be 0 as in every language I've used. – Ash Burlaczenko Jul 21 '16 at 13:50
• @AshBurlaczenko In C, the first argument to main is the number of command line arguments (including the executable name itself). Since no additional arguments are passed, that count is 1. The second argument to main is the actual list of command line arguments, but that argument is ignored in this program. – Chris Bouchard Jul 21 '16 at 15:43

# Bash, 12 characters

echo {1..10}

Sample run:

bash-4.3$echo {1..10} 1 2 3 4 5 6 7 8 9 10 ### Bash + coreutils, 10 characters (Just trying to be funny and using ': No such file or directory↵ls: cannot access ' as separator.) ls {1..10} Sample run: bash-4.3$ ls {1..10}
ls: cannot access '1': No such file or directory
ls: cannot access '2': No such file or directory
ls: cannot access '3': No such file or directory
ls: cannot access '4': No such file or directory
ls: cannot access '5': No such file or directory
ls: cannot access '6': No such file or directory
ls: cannot access '7': No such file or directory
ls: cannot access '8': No such file or directory
ls: cannot access '9': No such file or directory
ls: cannot access '10': No such file or directory

### Bash + coreutils, 6 characters

(Just trying to be boring. Or not just trying…)

seq 10

Sample run:

bash-4.3$seq 10 1 2 3 4 5 6 7 8 9 10 • Last one is just seq/coreutils, bash not involved. – hyde Jul 21 '16 at 18:07 • @hyde: Without bash the call to seq wouldn't be possible, would it? – Mega Man Sep 6 '16 at 8:13 • In my vision, if we leave out bash, then seq would be the interpreter. But then 10 is a valid program in “seq” language? – manatwork Sep 6 '16 at 8:25 • Never try this at your console: echo {1..1000000000} If you curious, do with your own risk. – Brain90 Oct 18 '16 at 14:58 • @Brain90, there is no danger on my poor 8Gb RAM machine. ;) “bash: brace expansion: failed to allocate memory for 1000000000 elements”. At least with bash 4.3.46. – manatwork Oct 18 '16 at 15:25 # HTML, 44 bytes <ol><li><li><li><li><li><li><li><li><li><li> This is longer than hardcoding the output, but it is more interesting this way. It creates an ordered list (<ol>) with ten empty list elements (<li>). By default ordered lists are delimited by decimal numbers starting with 1 and a period. HTML5 is very forgiving regarding unclosed tags, so it closes the li tags implicitly. • +1 for abusing HTML5's forgivingness (?). – HyperNeutrino Nov 17 '16 at 15:34 • Cold-blooded. I love it. – ricdesi Nov 17 '16 at 19:03 • Actually, NinjaBearMonkey and @HyperNeutrino, this isn’t “forgiveness” per se; HTML5 is pretty explicit about which tags are allowed to be left unclosed. It’s just that lists and list items are two that are. – KRyan Feb 5 '18 at 14:34 ## Jelly, 2 bytes ⁵R Explanation ⁵ Return the fifth command line argument or 10 R Range Implicit output • ⁵R, two bytes – Luis Mendo Jul 21 '16 at 9:19 • Why on Earth would someone invent a language in which a command returns either the fifth argument or the integer 10?.. – Andreï Kostyrka Nov 14 '16 at 15:11 • @AndreïKostyrka Because Dennis – TuxCrafting Nov 14 '16 at 15:23 • Is there an encoding where is just one byte? Since it's 3 bytes in UTF-8, the length of the program should be 4 bytes. – Radovan Garabík Jan 26 '17 at 14:25 • @RadovanGarabík Jelly uses its own codepage – TuxCrafting Jan 26 '17 at 15:09 # Brainfuck, 58 bytes -[----->+>+<<]>--<+++++[<++<++>>-]<<-[->>>.+<<.<]>>>>--.-. Try it online! • Beat me to it, and shorter too, will post mine anyway as I don't think we've used the same trick. Have my +1 :) – Katenkyo Jul 21 '16 at 10:00 • I was close with 67 bytes, but not close enough: ++++++[>++++++++<-]>>>++++++++++[-<+<<+>>>]<[-<.+<.>>]<<-[>-<-]>.-. – Julian Lachniet Dec 29 '16 at 17:36 # 05AB1E, 2 bytes Code: TL Explanation: T # Constant for 10 L # Range • When I saw this, I felt the need to say "tl;dr". :P +1, by the way. – HyperNeutrino Nov 17 '16 at 15:35 # CJam, 6 5 bytes A,:) 1 byte saved thanks to Luis Mendo Output: [1 2 3 4 5 6 7 8 9 10] Explaination: A, e# Push a list from 0 to 9. :) e# Increment all values.  e# Stringify the list. Try it online! • i like the smileyface. (Isn't there an error in your explanation: A, creates a list from 0 to 9) – KarlKastor Jul 21 '16 at 11:13 # LOLCODE, 79 bytes IM IN YR l UPPIN YR v TIL BOTH SAEM v AN 10 VISIBLE SUM OF v AN 1 IM OUTTA YR l This code may need some tweaking depending on the compiler you're using. Some want you to add HAI/KTHXBYE, some want you to declare the variable ahead of time. One compiler breaks if your loop name is shorter than two characters, even though the loop name is never used. # R, 4 bytes 2:10 The ":" is probably one of the most used R commands. Improvement by Barranka in comments. • Should they require printing a string, not returning a vector, consider cat(1:10). – Andreï Kostyrka Jul 22 '16 at 15:54 • Is there a leading whitespace? – Clashsoft Jul 22 '16 at 18:37 • Given that the output is [1] 1 2 3 4 5 6 7 8 9 10, maybe it would be better 2:10, which will output [1] 2 3 4 5 6 7 8 9 10 – Barranka Jul 22 '16 at 19:27 • @Clashsoft, that was a mistake - thank you. And yes, Barranka, good point - upvoted. – Forgottenscience Jul 22 '16 at 21:50 # Ruby, 8 bytes Separated by newlines. p *1..10 • *Separated by newlines. – David Conrad Jul 22 '16 at 17:06 • You can do that? – dkudriavtsev Oct 18 '16 at 16:38 • @DmitryKudriavtsev yes, the star causes the code to break down to p 1,2,3,4,5,6,7,8,9,10 and commas cause p to separate them by newlines. – Value Ink Oct 18 '16 at 18:11 • OK. I didn't think that the operator has a lower precedence than range. – dkudriavtsev Oct 18 '16 at 18:37 # Pyth, 2 bytes ST First time I've used a golfing lang to answer! Explanation: S 1-indexed range. [1, 2, ... A]. T Variable. Initialized to 10. (Ten) Implicitly printed. • Ninja'd by seconds :/ – TuxCrafting Jul 21 '16 at 9:44 # Actually, 9 Bytes 19;1+na Try it here! Explanation: 19;1+na 1 Push 1 to stack 9 Push 9 to stack ;1+ Push Function inside  to stack ; Push top element to stack 1+ Add 1 to top element n Run function x times (9 times) a Invert stack • Welcome to Programming Puzzles and Code Golf! – Adnan Jul 21 '16 at 9:29 ## JavaScript (ES6), 29 bytes alert([...${1e11/81^14}]+0)

Outputs 1,2,3,4,5,6,7,8,9,10. Not the shortest answer but I thought it was a fun calculation.

• why not alert([...'1'+234567891]+0) – edc65 Jul 26 '16 at 18:27
• @edc65 a) it's not as fun b) it's not as short as the previously posted JavaScript answer c) it's not even as short as alert([...'1234567891']+0). – Neil Jul 26 '16 at 18:45

## Brainfuck, 41 bytes

+[[-<]>->>->-<-]<<[-<<+<<.+>>>>>.<]<<+.-.

Output

1 2 3 4 5 6 7 8 9 10
• Nice! – – – – – – Leaky Nun Jul 24 '16 at 10:56

## Mathematica - 13 bytes

Echo@Range@10

Saved 4 bytes thanks to MartinEnder!

Output: >> {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}

# MATL, 3 bytes

10:

Try it online!

The code generates the vector [1 2 ... 10] and implicitly displays it, with the numbers separated by spaces.

# DC, 12 bytes

...a little bit mean now...

[zzpA>L]dsLx

Unrolled:

[   # start string constant
z   # push stack length (0 on 1st cycle)
z   # push stack length (1 on 1st cycle)
p   # print top of stack
A>L # if 10(decimal) < tos: execute L
]   # end string constant, push it
d   # duplicate the string
sL  # store a copy in L
x   # execute tos (which is the other string copy)

One of the z (push stack length) operations has no corresponding operation which takes it from the stack. This way the stack grows with each iteration by one. This is abused as the loop counter.

This loop starts with an empty stack, so the 1st z pushes 0 in the 1st iteration so the printing happens after the 2nd z which correspond to duplicating the result of 1+d in the version below. This way the comparison needs to test for bigger than 10 here instead of bigger than 11 below.

# DC, 14 bytes

Just straight forward...

1[p1+dB>L]dsLx

Unrolled:

1   # push 1
[   # start string constant
p   # print top of stack
1+  # add 1 to tos
d   # push tos (duplicate)
B>L # if 11(decimal) < tos: execute L
]   # end string constant, push it
d   # duplicate the string
sL  # store a copy in L
x   # execute tos (which is the other string copy)
• I wish you'd explain these =( – Evan Carroll Mar 9 '18 at 22:45
• @EvanCarroll — Writing dc programs is easier than explaining. But I tried... ;-) – yeti Mar 10 '18 at 6:52

# ><>, 13 bytes

01+:a)?;:nao!

Explanation :

01+:a)?;:nao!

0                 push initial value of n on the stack
1+               increments n
:              duplicates n on the stack
a             push 10 on the stack
)            pops n and 10 of the stack, push n>10 on the stack
?;          if n>10, stops program execution
:n        duplicates n on the stack in order to display it
ao      display 10 (x0A, linefeed)
!     skips the next instruction, which since ><> loops is the push 0

You can see it in action on the online interpreter.

• Could you please add an explanation? – Clashsoft Jul 21 '16 at 9:19
• Run the program nao! – Cyoce Jun 19 '17 at 18:07
• @Cyoce ><> is great to write enthusiastic pieces of code, I've got this motorcycle gear checker answer in the same vein ;) – Aaron Jun 19 '17 at 18:21

⍳10

TryAPL online!

# J, 6 bytes

1+i.10

Output: 1 2 3 4 5 6 7 8 9 10

Explaination:

i.10   NB. A range from 0 to 9.
• My thought was >:i.10, but that's the same thing. – Dane Jul 22 '16 at 21:40

main=print[1..10]

Outputs [1,2,3,4,5,6,7,8,9,10].

• I'm a bit confused here... I'm almost certain that it should be [1..10]. I don't have access to a haskell compiler, but I'll double-check in the morning. – Zwei Jul 21 '16 at 9:29
• @Zwei Ranges don't include their upper limit in Haskell. – C. Quilley Jul 21 '16 at 9:43
• @C.Quilley They totally do. You might be thinking of Python. – xnor Jul 21 '16 at 9:53
• Huh, I was sure I had tested this code. Apologies for the earlier assertion. – C. Quilley Jul 21 '16 at 11:04
• I don't think you need the main= part; the rest has the type of a haskell program, IO (). Correct me if there is a specific ruling against this. – Lazersmoke Aug 16 '16 at 16:28

# Fuzzy Octo Guacamole, 7 bytes

1.25*$: Multiplies 2*5, takes the range of that and 1, and prints the whole stack. 1.25*$:
1.      # Push 1 to the stack and switch stacks
25*   # Push 10 to the stack
$# Push every number in the inclusive range on the top of inactive stack and top of active stack ([1,2,3,4,5,6,7,8,9,10]) : # Print the stack, which is a list containing the numbers. ## PowerShell, 5 bytes 1..10 Creates a dynamic range with the .. operator from 1 to 10, then that array is left on the pipeline. Output is implicit. Default .ToString() method of an array is newline, so this will be newline-separated when run in a clean shell. # Java 7, 5351 52 bytes (loop) void l(){for(int i=0;++i<11;)System.out.println(i);} Alternative 51 bytes (hardcoded is shorter.., but considered a default loophole, so not allowed): void h(){System.out.print("1 2 3 4 5 6 7 8 9 10");} Alternative 54 bytes (recursive): int i=1;void r(){System.out.println(i);if(i++<10)r();} Ungolfed & test code for all three: Try it here. class Main{ static void h(){ System.out.print("1 2 3 4 5 6 7 8 9 10"); } static void l(){ for(int i=0; ++i < 11;){ System.out.println(i); } } static int i = 1; static void r(){ System.out.println(i); if(i++ < 10){ r(); } } public static void main(String[] a){ h(); System.out.println(); l(); System.out.println(); r(); } } EDIT: For funsies: As correctly pointed out by @SkippyLeGrandGourou, the base of the 1 to 10 isn't specified in the question, so here is (non-code-golfed) Java code that outputs 1 to 10 in the bases 2 to 10: Try it here. BASE-2: 1 10 BASE-3: 1 2 10 BASE-4: 1 2 3 10 BASE-5: 1 2 3 4 10 BASE-6: 1 2 3 4 5 10 BASE-7: 1 2 3 4 5 6 10 BASE-8: 1 2 3 4 5 6 7 10 BASE-9: 1 2 3 4 5 6 7 8 10 BASE-10: 1 2 3 4 5 6 7 8 9 10 • Loop can be for(int i=1;i<11;)System.out.println(i++), saves one byte. – Clashsoft Jul 21 '16 at 9:23 • @zyabin101 Changed the order so the hard-coded answer is non-competing. Still left it in the answer though, since it's pretty funny (and sad) that hard-coded is the shortest way to print 1-10 in Java 7.. – Kevin Cruijssen Jul 21 '16 at 10:00 • @zyabin101 Except when the question is tagged kolmogorov-complexity. – Neil Jul 22 '16 at 19:43 • @Neil Oh, right. o_o – user48538 Jul 22 '16 at 19:49 • Java 8's the clear winner here thanks to lambdas! ()->java.util.stream.IntStream.range(1,11).forEach(System.out::println). Why you say it's longer? It's Java 8... Java 8 is shorter by default! I didn't even put braces before and after the code! I can even count to 98 without getting an extra character! See? Java 8 rules! – Olivier Grégoire Jun 23 '17 at 8:39 # Perl 6, 12 bytes say @(1..10) The @() is needed to convert to an array Alternative solution: say @(^10+1) Builds a range [0,10) then adds one, then converts to an array. • For Perl 5.10, 14 bytes and almost like yours: say for(1..10) – Paul Picard Jul 21 '16 at 13:50 • @PaulPicard do post it! Perl 5 is a different language. – Ven Jul 21 '16 at 13:58 • Can you remove the space for say@(1..10)? – Cyoce Jun 23 '17 at 8:53 • @Cyoce alas no, it's an error. – Ven Jun 23 '17 at 17:04 ## Python2 - 19 17 bytes print range(1,11) Saved 1 byte, thanks to KevinLau - not Kenny! Output: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10] • Use range instead of xrange, assuming Python 2. In fact, this current version doesn't seem to work on my machine in either Python version. – Value Ink Jul 21 '16 at 9:18 • @KevinLau-notKenny I could've sworn that I tried that, and got nothing to STDOUT. Thanks! – Yytsi Jul 21 '16 at 9:20 • Important: It's only Python 2 – Mega Man Jul 23 '16 at 18:47 • @ABcDexter I checked it out, very nice! The reason I didn't use Python3, was because I was forced to cast the range object that returns an iterator, to a list. – Yytsi Jul 23 '16 at 19:39 • @TuukkaX Yes, exactly. I'll try some other languages too. Thanks :). – ABcDexter Jul 23 '16 at 19:44 # Vim, 12 bytes i1<Esc>qqYp<C-a>q8@q Outputs 1 2 3 4 5 6 7 8 9 10 Explanation: i1<Esc>qqYp<C-a>q8@qZZ qqYp<C-a>q -- Macro q: duplicate line and increment (6) i1<Esc> -- Insert 1 (3) 8@q -- Run macro q 8 times (3) Tested on Neovim 0.1.4, which to my knowledge is keystroke-compatible with Vim. • Nice. I came up with iYp<C-v><C-a>1<Esc>d^9@-ZZ. Same byte count. – primo Jul 24 '16 at 12:07 • Shorter. :) – DJMcMayhem Nov 16 '16 at 21:36 ## Retina, 13 bytes I've got two solutions at this byte count, but it doesn't seem optimal: _10$*
1
$._ 11$*_
\B
$.` They both use _ as separators, prefix and suffix. # Groovy, 11 characters print 1..10 Sample run: bash-4.3$ groovy -e 'print 1..10'
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]