Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Perl golf:打印数字的幂_Perl_Math_Code Golf - Fatal编程技术网

Perl golf:打印数字的幂

Perl golf:打印数字的幂,perl,math,code-golf,Perl,Math,Code Golf,打印硬编码的2位十进制数(例如,.37)的前9次幂的最短Perl one liner是什么 输出将类似于: 1 0.37 0.1369 [etc.] 官方高尔夫规则: 最小的(关键点)击数获胜 笔划计数包括命令行 perl-e“for(my$i=1;$i

打印硬编码的2位十进制数(例如,.37)的前9次幂的最短Perl one liner是什么

输出将类似于:

1
0.37
0.1369
[etc.]
官方高尔夫规则:

  • 最小的(关键点)击数获胜
  • 笔划计数包括命令行
  • perl-e“for(my$i=1;$i<10;$i++){print(.37**$i)。\“\n\”;}”
    
    只需快速输入。:)


    修正了换行

    使用perl 5.10.0及以上版本:

    print join("\n", map { 0.37**$_ } (0..9));
    
    perl -E'say 0.37**$_ for 0..8'
    
    对于较旧的PERL,您没有
    say
    和-E,但这是有效的:

    perl -le'print 0.37**$_ for 0..8'
    
    更新:第一个解决方案由30个按键组成。删除前一个0将得到29。可以节省另一个空间,因此我的最终解决方案是28个笔划:

    perl -E'say.37**$_ for 0..8'
    
    如果在选项中添加-l,则可以跳过“\n”部分

    如果您在提交前将程序切碎,则执行23次笔划:-P

    perl -le'map{print.37**$_}0..8'
    
    31个字符-我没有5.10来尝试使用“say”的明显改进,但这是28:

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

    26-是的,那是作弊。(是的,我正在做从1到9.0到8的幂运算,这太傻了。)

    在Perl 6中只是为了好玩:

  • 28个字符:

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

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

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

    我想你忘了换行符-你可能需要这样的东西:perl-e“for(my$I=0;$I<10;$I++){print(.37**$I,\“\n\”);}”伟大的人都有相同的想法。我只是在修好它,但我想工具箱可能只有我!perl-e'print.37**$.\n“foreach(1..10);”深渊正在做的事情的略短版本。如果您不想要“\n”,可以使用$/代替。它包含输入记录分隔符,默认为“\n”,短两个字符。该死,这正是我要发布的内容(虽然9不应该是8吗?)是的,更正了。(莱昂,你也不经常去帕尔蒙克斯吗?如果是的话,那是哪一个尼克?)不,我不经常去帕尔蒙克斯(虽然我在那里有一个帐户使用这个全名),为什么?你的答案和你在帕尔蒙克斯上能找到的答案很相似,所以我很好奇;-)减少空格和0,你可以减少2个笔划。如果你不想找到一种方法让人们克服对perl作为一种纯写语言的恐惧,你就不必玩了:-就像有两个28笔划,都需要
    perl 5.10
    @Tanktalus:你认为perl可怕吗?请看dc:dc-e'20k1p.37dsap7[rla*pr1-d0]中的这个解决方案,按下shift+4是否算作生成“$”的额外键笔划?您的措辞可能不明确。+9表示perl-e'..。请记住,“2您的笔划计数包括命令行”实际上,我认为这是不明确的。比赛规则有时只允许程序,但添加任何命令行开关的长度加上一个空格。seq 9 | perl-pE'$.=.37**$.''.'也是26seq 9 | perl-pE's/.37**$./e'没有那么短,但有点模糊,不需要新的perl。
    perl6 -e'.say for .37»**»^9'
    
    perl6 -e'say .37**$_ for^9'