perlで世界のナベアツ問題
昨日見つけた、世界のナベアツ問題を、perlでやってみました。perl初心者なので素直に書いたつもりです。
#!/usr/bin/perl for ($i = 1; $i <= 40; $i++) { $aho = $i % 3; $aho2 = $i; if ( $aho2 >= 10 ) { for ( $aho3 = 0; $aho2 > 10; $aho3++ ) { $aho2 = $aho2 - 10; } } $ii = $i % 8; if ( $ii == 0 ) { print "$iぅぅういえぇえあ\n"; } elsif ( $aho == 0 || $aho2 == 3 || $aho3 == 3 ) { print "$iっ!!\n"; } else { print "$i\n"; } }
ネットで色々調べた結果、以下のように短く出来ました。
#!/usr/bin/env perl foreach ( 1..40 ) { if ( $_ %8 == 0 ) { print "$_ぅぅういえぇえあ\n"; } elsif( $_ %3 == 0 || $_ =~/3/ ) { print "$_っ!!\n"; } else { print "$_\n"; } }
まだまだ長いでしょうが、ワンライナーに無理やりしたら以下の通りです。
perl -e 'foreach(1..40){if($_%8==0){print"$_ぅぅういえぇえあ\n";}elsif($_%3==0||$_=~/3/){print"$_っ!!\n";}else{print"$_\n";}}'
ではー。
2010年1月6日追記:
その後を書きました。