什么是最短的 Perl 单行,它打印出硬编码的 2 位小数的前 9 次幂(例如,0.37),每行都在自己的行上?
输出看起来像:
1
0.37
0.1369
[etc.]
官方 Perl 高尔夫规则:
- 最少的(键)敲击数获胜
- 您的笔画数包括命令行
使用 perl 5.10.0 及更高版本:
perl -E'say 0.37**$_ for 0..8'
对于较旧的 perls,您没有say
和 -E,但这有效:
perl -le'print 0.37**$_ for 0..8'
更新:第一个解决方案由 30 次击键组成。删除第一个 0 得到 29。可以节省另一个空间,所以我的最终解决方案是 28 笔画:
perl -E'say.37**$_ for 0..8'
perl -le'map{print.37**$_}0..8'
31 个字符 - 我没有 5.10 来尝试使用“say”的明显改进,但这是 28:
perl -E'map{say.37**$_}0..8'
seq 9|perl -nE'say.37**$_'
26 - 是的,那是作弊。(是的,我正在做从 1 到 9 的幂。0 到 8 只是愚蠢的。)
在 Perl 6 中只是为了好玩:
28 个字符:
perl6 -e'.say for .37»**»^9'
27 个字符:
perl6 -e'say .37**$_ for^9'
(至少基于当前的空白规则。)
perl -e 'print .37**$_,"\n" for 0..9'
如果将 -l 添加到选项中,则可以跳过 ,"\n" 部分
print join("\n", map { 0.37**$_ } (0..9));
print.37**$_.$/for 0..8
如果在提交之前将程序砍掉,则为 23 笔。:-P
perl -e "for(my $i = 1; $i < 10; $i++){ print((.37**$i). \"\n\"); }"
只是一个快速进入。:)
固定换行!