Perl golf:打印数字的幂
打印硬编码的2位十进制数(例如,.37)的前9次幂的最短Perl one liner是什么 输出将类似于: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
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中只是为了好玩:
perl6 -e'.say for .37»**»^9'
perl6 -e'say .37**$_ for^9'
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'