部屋を掃除したら漫画が沢山出てきたので書く日記

漫画とか合唱とかUNIXとかLinuxとかについて書く日記です。

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日追記:
その後を書きました。