打印硬编码的2位小数(例如.37)的前9次方的最短Perl单行是什么?
输出看起来像:
1
0.37
0.1369
[etc.]
官方Perl高尔夫规则:
- (关键)击球次数最少获胜
- 您的笔划数包括命令行
使用perl 5.10.0及以上版本:
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'
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"); }"
只是一个快速输入。:)
固定换行!