Perl golf:打印数字的力量

时间:2008-10-16 20:04:36

标签: perl math code-golf

什么是最短的Perl单行程序打印出硬编码的2位十进制数的前9个幂(例如,.37),每个都在自己的行上?

输出看起来像:

1
0.37
0.1369
[etc.]

官方Perl高尔夫规则:

  1. 获得最少数量的(关键)笔画
  2. 您的笔画数包括命令行

8 个答案:

答案 0 :(得分: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'

答案 1 :(得分:6)

perl -le'map{print.37**$_}0..8'

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

perl -E'map{say.37**$_}0..8'

答案 2 :(得分:4)

seq 9|perl -nE'say.37**$_'
26 - 是的,这是作弊。 (是的,我正在从1到9做权力.0到8只是愚蠢。)

答案 3 :(得分:3)

只是为了在Perl 6中获得乐趣:

  1. 28个字符:

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

    perl6 -e'say .37**$_ for^9'
    
  3. (至少基于当前的空白规则。)

答案 4 :(得分:2)

perl -e 'print .37**$_,"\n" for 0..9'

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

答案 5 :(得分:1)

print join("\n", map { 0.37**$_ } (0..9));

答案 6 :(得分:1)

print.37**$_.$/for 0..8
如果你在提交之前砍掉程序,那么行程为23次。 :-P

答案 7 :(得分:0)

perl -e "for(my $i = 1; $i < 10; $i++){ print((.37**$i). \"\n\"); }"

快速入门。 :)

修复了换行符!