这可能是一个非常简单的挑战,但令我惊讶的是它尚未在代码高尔夫球上完成:
以升序打印从1到10(含1和10)的所有整数到标准输出。
您的输出格式可以是您的语言支持的任何格式。这包括任意的分隔符(逗号,分号,换行符,这些字符的组合等,但没有数字)以及前缀和后缀(如[...]
)。但是,您可能不会输出1到10以外的任何其他数字。您的程序可能不会接受任何输入。不允许出现标准漏洞。
这是代码高尔夫球,因此最短答案以字节为单位!
这可能是一个非常简单的挑战,但令我惊讶的是它尚未在代码高尔夫球上完成:
以升序打印从1到10(含1和10)的所有整数到标准输出。
您的输出格式可以是您的语言支持的任何格式。这包括任意的分隔符(逗号,分号,换行符,这些字符的组合等,但没有数字)以及前缀和后缀(如[...]
)。但是,您可能不会输出1到10以外的任何其他数字。您的程序可能不会接受任何输入。不允许出现标准漏洞。
这是代码高尔夫球,因此最短答案以字节为单位!
Answers:
main(i){while(printf("%d ",i++)<3);}
之所以有效,是因为循环在第一个2位数之后终止。
i
在运行该程序时,此处始终为1。你还有什么意思吗
<ol><li><li><li><li><li><li><li><li><li><li>
这比对输出进行硬编码要长,但是用这种方式更有趣。它创建一个<ol>
有十个空列表元素(<li>
)的有序列表()。默认情况下,有序列表由以1和一个句点开头的十进制数字分隔。
HTML5对于未关闭的li
标签非常宽容,因此会隐式关闭标签。
echo {1..10}
样品运行:
bash-4.3$ echo {1..10}
1 2 3 4 5 6 7 8 9 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
(只是想无聊。或者不只是想……)
seq 10
样品运行:
bash-4.3$ seq 10
1
2
3
4
5
6
7
8
9
10
bash
,那么seq
将是口译员。但是10
,使用“ seq”语言的有效程序是否有效?
bash
4.3.46。
⁵R
说明
⁵ Return the fifth command line argument or 10
R Range
Implicit output
⁵R
,两个字节
⁵
只有一个字节的编码?由于在UTF-8中为3个字节,因此程序的长度应为4个字节。
++++++[>++++++++<-]>>>++++++++++[-<+<<+>>>]<[-<.+<.>>]<<-[>-<-]>.-.
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,有些人希望您提前声明变量。如果您的循环名少于两个字符,则一个编译器会中断,即使从未使用过循环名也是如此。
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.
2:10
“:”可能是最常用的R命令之一。Barranka在评论中进行了改进。
cat(1:10)
。
[1] 1 2 3 4 5 6 7 8 9 10
,可能会更好2:10
,它将输出[1] 2 3 4 5 6 7 8 9 10
用换行符分隔。
p *1..10
p 1,2,3,4,5,6,7,8,9,10
逗号,并引起逗号p
以换行符分隔。
ST
第一次我用高尔夫球场的语言来回答!
说明:
S 1-indexed range. [1, 2, ... A].
T Variable. Initialized to 10. (Ten)
Implicitly printed.
现在有点意思
[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
下面。
直截了当...
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)
dc
程序比解释容易。但我尝试过... ;-)
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
您可以在在线解释器中看到它的运行情况。
main=print[1..10]
输出[1,2,3,4,5,6,7,8,9,10]
。
[1..10]
。我没有使用haskell编译器的权限,但是我会在早上仔细检查。
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.
1..10
使用..
运算符from 1
到创建动态范围10
,然后将该数组保留在管道中。输出是隐式的。.ToString()
数组的默认方法是换行符,因此在干净的shell中运行时将用换行符分隔。
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++)
,节省一个字节。
()->java.util.stream.IntStream.range(1,11).forEach(System.out::println)
。为什么说更长呢?它是Java 8 ... Java 8默认较短!我什至没有在代码前后加上花括号!我什至可以算到98,而无需增加角色!看到?Java 8规则!
print range(1,11)
节省了1个字节,这要归功于KevinLau-不是Kenny!
输出: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
range
代替xrange
。实际上,当前版本在这两种Python版本上的计算机上似乎均不起作用。
range
返回迭代器的对象转换为列表。
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
。相同的字节数。
for(i=1;i<11;)alert(i++)
alert(i++)
(并删除另一个i++
)。
i=10;while(i)alert(i--)
。