打印从1到10的数字


42

这可能是一个非常简单的挑战,但令我惊讶的是它尚未在代码高尔夫球上完成:

以升序打印从1到10(含1和10)的所有整数到标准输出。

您的输出格式可以是您的语言支持的任何格式。这包括任意的分隔符(逗号,分号,换行符,这些字符的组合等,但没有数字)以及前缀和后缀(如[...])。但是,您可能不会输出1到10以外的任何其他数字。您的程序可能不会接受任何输入。不允许出现标准漏洞。

这是,因此最短答案以字节为单位!

排行榜


10
相关(重复?)
Luis Mendo

17
如果唯一的更改是对单个参数进行硬编码,则该名称属于“ 琐碎的更改 ”,并且按照该网站的标准,仍视为重复项。
彼得·泰勒

10
@PeterTaylor另一个挑战是整数限制有一个很大的问题。指定每种不具有64位整数的TC语言的方式都需要实现它们。(这会影响很多语言。)
Martin Ender

17
@xnor坦白说,我宁愿关闭另一个挑战作为此挑战的副本。需求几乎毁了它。
丹尼斯

9
我简直不敢相信(当前)71个回答中的每一个都假设基数应为小数……
Skippy le Grand Gourou

Answers:


68

C,36个字节

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

之所以有效,是因为循环在第一个2位数之后终止。


1
没有提及能够将参数传递给函数。
Ash Burlaczenko '16

10
@AshBurlaczenko您在说什么?这是高尔夫中将int初始化为1的一种标准技术。您无需传递任何命令行参数。实际上,这样做会导致程序产生错误的输出。
xsot

6
@AshBurlaczenko通过协商一致,我们已经同意程序可以假定不会使用不必要的输入来调用它们(在这种情况下,除了程序本身之外,没有其他命令行参数)。这意味着i在运行该程序时,此处始终为1。你还有什么意思吗
FryAmTheEggman'7

2
抱歉,我没有写过C,但是假设它的默认值是0,就像我使用的每种语言一样。
Ash Burlaczenko '16

16
@AshBurlaczenko在C中,main的第一个参数是命令行参数的数量(包括可执行文件名称本身)。由于没有传递其他参数,因此该计数为1。main的第二个参数是命令行参数的实际列表,但是在程序中该参数将被忽略。
克里斯·布查德

43

HTML,44个字节

<ol><li><li><li><li><li><li><li><li><li><li>

这比对输出进行硬编码要长,但是用这种方式更有趣。它创建一个<ol>有十个空列表元素(<li>)的有序列表()。默认情况下,有序列表由以1和一个句点开头的十进制数字分隔。

HTML5对于未关闭的li标签非常宽容,因此会隐式关闭标签。


4
+1用于滥用HTML5的宽恕(?)。
HyperNeutrino '16

1
冷血的。我喜欢它。
ricdesi

实际上,NinjaBearMonkey和@HyperNeutrino本身并不是“宽恕”。HTML5非常明确地说明了允许哪些标签不公开。只是列表和列表项是两个。
KRyan

41

重击,12个字符

echo {1..10}

样品运行:

bash-4.3$ echo {1..10}
1 2 3 4 5 6 7 8 9 10

Bash + coreutils,10个字符

(只是想变得有趣并': No such file or directory↵ls: cannot access '用作分隔符。)

ls {1..10}

样品运行:

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个字符

(只是想无聊。或者不只是想……)

seq 10

样品运行:

bash-4.3$ seq 10
1
2
3
4
5
6
7
8
9
10

6
最后一个只是seq / coreutils,不涉及bash。
海德

1
@hyde:如果没有bash,将无法调用seq,对吗?
洛克人

在我看来,如果我们省略bash,那么seq将是口译员。但是10,使用“ seq”语言的有效程序是否有效?
manatwork's

切勿在控制台上尝试此操作:echo {1..1000000000}如果您感到好奇,请自担风险。
Brain90

@ Brain90,我可怜的8Gb RAM机器上没有危险。;)“ bash:大括号扩展:无法为1000000000个元素分配内存”。至少与bash4.3.46。
manatwork '16

24

果冻,2个字节

⁵R

说明

⁵  Return the fifth command line argument or 10
 R Range
   Implicit output

7
⁵R,两个字节
Luis Mendo

13
为什么地球上会有人发明一种语言,其中一个命令返回无论是第五个参数或整数10 ..?
安德烈KOSTYRKA

14
@AndreïKostyrka因为丹尼斯
TuxCrafting

1
是否只有一个字节的编码?由于在UTF-8中为3个字节,因此程序的长度应为4个字节。
RadovanGarabík17年

2
@RadovanGarabíkJelly使用自己的代码页
TuxCrafting

20

Brainfuck,58个字节

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

在线尝试!


1
击败我,并且更简短,无论如何都会发布我的,因为我认为我们没有使用相同的技巧。让我+1 :)
Katenkyo '16

我当时有67个字节,但是还不够接近:++++++[>++++++++<-]>>>++++++++++[-<+<<+>>>]<[-<.+<.>>]<<-[>-<-]>.-.
朱利安·拉希涅


16

LOLCODE,79个字节

IM IN YR l UPPIN YR v TIL BOTH SAEM v AN 10
VISIBLE SUM OF v AN 1
IM OUTTA YR l

根据您使用的编译器,可能需要对该代码进行一些调整。有些人希望您添加HAI / KTHXBYE,有些人希望您提前声明变量。如果您的循环名少于两个字符,则一个编译器会中断,即使从未使用过循环名也是如此。


15

CJam,6个 5字节

A,:)`

Luis Mendo节省了1个字节

输出: [1 2 3 4 5 6 7 8 9 10]

说明:

A,      e# Push a list from 0 to 9.
  :)    e# Increment all values.
    `   e# Stringify the list.

在线尝试!


3
我喜欢笑脸。(您的解释中没有错误:A,创建一个从0到9的列表)
KarlKastor

14

R,4个字节

2:10

“:”可能是最常用的R命令之一。Barranka在评论中进行了改进。


2
如果需要打印字符串而不返回向量,请考虑cat(1:10)
安德烈KOSTYRKA

有领先的空格吗?
Clashsoft '16

9
鉴于输出为[1] 1 2 3 4 5 6 7 8 9 10,可能会更好2:10,它将输出[1] 2 3 4 5 6 7 8 9 10
Barranka '16

@Clashsoft,这是一个错误-谢谢。是的,Barranka,好的观点-赞成。
Forgottenscience


11

Pyth,2个字节

ST

第一次我用高尔夫球场的语言来回答!

说明:

S    1-indexed range. [1, 2, ... A].
 T   Variable. Initialized to 10. (Ten)
     Implicitly printed.

以秒为单位的忍者:/
TuxCrafting '16


10

实际上是9个字节

19`;1+`na

在这里尝试!

说明:

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

9
欢迎来到编程难题和Code Golf!
阿德南

10

Mathematica-13个字节

Echo@Range@10

由于节省了4个字节 MartinEnder,

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


10

JavaScript(ES6),29个字节

alert([...`${1e11/81^14}`]+0)

输出1,2,3,4,5,6,7,8,9,10。不是最短的答案,但我认为这是一个有趣的计算。


为什么不这样做alert([...'1'+234567891]+0)
edc65 '16

2
@ edc65 a)不那么有趣b)不像以前发布的JavaScript答案那么短c)甚至不如alert([...'1234567891']+0)
尼尔


8

DC,12字节

现在有点意思

[zzpA>L]dsLx

展开:

[   # 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)

之一的z(推栈长度)操作没有相应的操作这需要它从堆栈。这样,堆栈随着每次迭代增加一。这被滥用为循环计数器。

该循环开始于一个空栈,所以第一z推动0在第一迭代中,因此第二印刷后发生z对应于复制的结果1+d在下面的版本。这样,比较需要测试的比10此处更大,而不是bigger than 11下面。


DC,14字节

直截了当...

1[p1+dB>L]dsLx

展开:

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)

希望您能解释这些=(
Evan Carroll

@EvanCarroll —编写dc程序比解释容易。但我尝试过... ;-)
雪人

7

> <>,13个字节

01+:a)?;:nao!

说明:

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

您可以在在线解释器中看到它的运行情况。


你能补充一个解释吗?
Clashsoft '16

1
运行程序nao!
Cyoce

@Cyoce> <>非常适合编写热情的代码,我的摩托车齿轮检查器答案与此相同;)
Aaron


6

J,6个字节

1+i.10

输出: 1 2 3 4 5 6 7 8 9 10

说明:

1+       NB. Add one to...
  i.10   NB. A range from 0 to 9.

我的想法是>:i.10,但这是同一回事。
戴恩

6

Haskell,17个字节

main=print[1..10]

输出[1,2,3,4,5,6,7,8,9,10]


我在这里有点困惑...我几乎可以确定它应该是[1..10]。我没有使用haskell编译器的权限,但是我会在早上仔细检查。
Zwei

@Zwei Ranges在Haskell中不包括其上限。
C. Quilley '16

1
@ C.Quilley他们完全做到了。您可能正在考虑使用Python。
xnor

恩,我确定我已经测试了这段代码。为先前的声明表示歉意。
C. Quilley '16

1
我认为您不需要main =部分;其余的具有haskell程序的类型IO()。如果对此有特定裁定,请纠正我。
Lazersmoke

6

Fuzzy Octo鳄梨调味酱,7个字节

1.25*$:

相乘2*5,取和的范围1,并打印整个堆栈。

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.

6

PowerShell,5个字节

1..10

使用..运算符from 1到创建动态范围10,然后将该数组保留在管道中。输出是隐式的。.ToString()数组的默认方法是换行符,因此在干净的shell中运行时将用换行符分隔。


6

Java 7、53 51 52字节(循环)

void l(){for(int i=0;++i<11;)System.out.println(i);}

备用51个字节(硬编码较短。.,但被认为是默认漏洞,因此不允许):

void h(){System.out.print("1 2 3 4 5 6 7 8 9 10");}

备用54个字节(递归):

int i=1;void r(){System.out.println(i);if(i++<10)r();}

所有三个的取消测试的代码:

在这里尝试。

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();
  }
}

编辑:有趣的是:正如@SkippyLeGrandGourou正确指出的那样,问题中未指定1到10的基数,因此这里是(非代码查询)Java代码,以2到2的基数输出1到10 10:

在这里尝试。

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 

循环可以为for(int i=1;i<11;)System.out.println(i++),节省一个字节。
Clashsoft '16

@ zyabin101更改了顺序,因此硬编码的答案不具有竞争性。但是,仍然将其留在答案中,因为很有趣(很可悲),硬编码是用Java 7打印1-10的最短方法
。–

2
@ zyabin101除非将问题标记为kolmogorov-complexity
尼尔

@尼尔哦,对。o_o
user48538 '16

1
感谢lambda,Java 8无疑是赢家!()->java.util.stream.IntStream.range(1,11).forEach(System.out::println)。为什么说更长呢?它是Java 8 ... Java 8默认较短!我什至没有在代码前后加上花括号!我什至可以算到98,而无需增加角色!看到?Java 8规则!
奥利维尔·格雷戈尔

6

Perl 6,12字节

say @(1..10)

@()是需要转换为数组

替代解决方案:

say @(^10+1)

建立一个范围[0,10),然后加一个,然后转换为数组。


对于Perl 5.10,为14个字节,几乎像您一样:say for(1..10)
Paul Picard

@PaulPicard发布!Perl 5是另一种语言。
2016年

您可以删除该空间say@(1..10)吗?
Cyoce

@Cyoce las,不,这是一个错误。
Ven

5

Python2 - 19个 17字节

print range(1,11)

节省了1个字节,这要归功于KevinLau-不是Kenny

输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]


假设使用Python 2,请使用range代替xrange。实际上,当前版本在这两种Python版本上的计算机上似乎均不起作用。
价值墨水

@ KevinLau-notKenny我可以发誓我尝试过这种方法,但对STDOUT没有任何帮助。谢谢!
Yttsi '16

重要提示:只有Python 2
Mega Man

1
@ABcDexter我检查了一下,非常好!我之所以不使用Python3,是因为我被迫将range返回迭代器的对象转换为列表。
Yytsi '16

1
@TuukkaX是的,完全是。我也会尝试其他一些语言。谢谢 :)。
ABcDexter

5

Vim,12个字节

i1<Esc>qqYp<C-a>q8@q

产出

1
2
3
4
5
6
7
8
9
10

说明:

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)

在Neovim 0.1.4上进行了测试,据我所知它与Vim的按键兼容。


真好 我想出了iYp<C-v><C-a>1<Esc>d^9@-ZZ。相同的字节数。
primo



4

Groovy,11个字符

print 1..10

样品运行:

bash-4.3$ groovy -e 'print 1..10'
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10]

4

JavaScript,25个 24字节

for(i=1;i<11;)alert(i++)

1
欢迎来到PPCG!我认为您可以这样做来节省一个字节alert(i++)(并删除另一个i++)。
Martin Ender

太糟糕了,该问题规定该顺序必须是升序的,否则您可以通过使用减量的while循环而不是for循环来节省字节i=10;while(i)alert(i--)
kamoroso94 '16

代码不是必须嵌入到函数中吗?
ericw31415

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.