鳳鳴は祖父の俳号

日記 メモ そんなの

unix的FizzBuzz

 フィボナッチ数列FizzBuzzするfibBuzzなんかも出てきて毎回作るのもなんなので、パイプでつないで処理するフィルタにしてみた。もちろんawk

fzbz.awk - 3,5の倍数の時に文字列に置き換え

#! /usr/local/bin/gawk -f
#
# FizzBuzz filter
#
($0%3)==0 && ($0%5==0){print "FizzBuzz";next}
($0%3)==0 {print "Fizz";next}
($0%5)==0 {print "Buzz";next}
{print $0}

100.awk - 1〜100を生成

#! /usr/local/bin/gawk -f
#
# 1..100 generator for FizzBuzz
#
BEGIN{
        for(i=1;i<=100;i++) print i
}

これらfzbz.awk、100.awkは chmod +x で実行可能にしておく。

$ ./100.awk | ./fzbz.awk

これでOK。フィボナッチ数列FizzBuzzしたい時は以下のソースを使う。

$ ./fib.awk | ./fzbz.awk

fib.awk - フィボナッチ数列を生成

#! /usr/local/bin/gawk -f
#
# Fibonacci number
#
BEGIN{
        F[0]=0;
        F[1]=1;
        print F[1];
        for(i=2;i<=100;i++){
                F[i]=F[i-1]+F[i-2];
                print F[i];
        }
}

 勢い余って素数列を生成しFizzBuzzしてみたが、よく考えたら3と5が出た後はありえないのだった。