ワンライナーって普段書かないので興味本位で調べてみました。
今回の素材はFizzBuzzの例。
FizzBuzzは、1から順に整数をカウントしていって、3の倍数のとき"Fizz"、5の倍数のとき"Buzz"、15の倍数のとき"FizzBuzz"と出力するものです。
上から順にコードが短いものを列挙します。
※書式の都合上、改行あり。
perl -e 'print $_ % 15 == 0 ? "FizzBuzz\n"
: $_ % 5 == 0 ? "Buzz\n"
: $_ % 3 == 0 ? "Fizz\n"
: "$_\n" for 1 .. 100'
perl -e 'for(1..100){print;print"\b\b\bFizz"
if$_%3==0;print"\b\b\bBuzz"if$_%5==0;print"\n"}'
perl -le 'print $_%15?$_%5?$_%3?$_
:Fizz:Buzz:FizzBuzz for(1..100)'
perl -le 'print(($_%3?"":Fizz).($_%5?"":Buzz)or$_)for 1..100'
最下段のが最短とのことでした。。
いやはや、perlはフリー&カオス。
0 件のコメント:
コメントを投稿