2008-10-16 41 views
2

什麼是最短的Perl單線程,它打印出硬編碼的2位小數(例如,.37)的前9個冪,每個都在它自己的行上?Perl golf:打印數字的能力

輸出看起來是這樣的:

1 
0.37 
0.1369 
[etc.] 

官方Perl的高爾夫規則:

  1. 最小的(關鍵)筆畫數勝
  2. 您的行程計數包括命令行
+1

如果你不想要,你不需要玩 – 2008-10-16 20:35:17

+0

讓人們克服他們對於perl作爲只寫語言的恐懼的好方法:-P – Tanktalus 2008-10-16 20:51:28

+0

看起來有兩個28個筆畫,兩個都是需要`Perl 5.10`。 – 2008-10-16 23:06:27

回答

15

用Perl 5.10.0及以上:

perl -E'say 0.37**$_ for 0..8' 

隨着你沒有say和-E舊的皮爾斯,但這個工程:

perl -le'print 0.37**$_ for 0..8' 

更新:第一解決方案由30個按鍵組成。除去第一0給人29.另可節省空間,所以我最終的解決辦法是用這28招:

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

只是一個快速入口。 :)

固定到換行符!

1
print join("\n", map { 0.37**$_ } (0..9)); 
2
perl -e 'print .37**$_,"\n" for 0..9' 

如果添加-l你可以跳過選項「\ n」的一部分

1
print.37**$_.$/for 0..8 

如果您在提交前切斷程序,則爲23筆。 :-P

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

31個字符 - 我沒有使用5.10 「說」 嘗試了明顯的改善,但是,這是28:

perl -E'map{say.37**$_}0..8' 
4
seq 9|perl -nE'say.37**$_' 

26 - 是的,這就是作弊。 (是的,我做的權力,從1到9 0-8僅僅是愚蠢的。)

3

只是爲了好玩在Perl   6:

  1. 28個字符:

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

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

(至少基於當前的空白規則。)