2

什么是最短的 Perl 单行,它打印出硬编码的 2 位小数的前 9 次幂(例如,0.37),每行都在自己的行上?

输出看起来像:

1
0.37
0.1369
[etc.]

官方 Perl 高尔夫规则:

  1. 最少的(键)敲击数获胜
  2. 您的笔画数包括命令行
4

8 回答 8

15

使用 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'
于 2008-10-16T20:24:20.380 回答
6
perl -le'map{print.37**$_}0..8'

31 个字符 - 我没有 5.10 来尝试使用“say”的明显改进,但这是 28:

perl -E'map{say.37**$_}0..8'
于 2008-10-16T22:04:20.023 回答
4
seq 9|perl -nE'say.37**$_'

26 - 是的,那是作弊。(是的,我正在做从 1 到 9 的幂。0 到 8 只是愚蠢的。)

于 2008-10-17T06:23:17.380 回答
3

在 Perl 6 中只是为了好玩:

  1. 28 个字符:

    perl6 -e'.say for .37»**»^9'
    
  2. 27 个字符:

    perl6 -e'say .37**$_ for^9'
    

(至少基于当前的空白规则。)

于 2008-10-18T17:50:28.330 回答
2
perl -e 'print .37**$_,"\n" for 0..9'

如果将 -l 添加到选项中,则可以跳过 ,"\n" 部分

于 2008-10-16T20:26:34.870 回答
1
print join("\n", map { 0.37**$_ } (0..9));
于 2008-10-16T20:22:40.960 回答
1
print.37**$_.$/for 0..8

如果在提交之前将程序砍掉,则为 23 笔。:-P

于 2008-10-16T21:08:01.603 回答
0
perl -e "for(my $i = 1; $i < 10; $i++){ print((.37**$i). \"\n\"); }"

只是一个快速进入。:)

固定换行!

于 2008-10-16T20:14:36.063 回答