2007年5月24日木曜日

FizzBuzz問題

どうしてプログラマに・・・プログラムが書けないのか?にあるFizzBuzz問題を解くプログラム。

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

#runtime "hsp3cl"
    repeat 1001
        if (cnt \ 3) {
            if (cnt \ 5) { mes cnt } else { mes "Buzz" }
        } else {
            if (cnt \ 5) { mes "Fizz" } else { mes "FizzBuzz" }
        }
    loop
    stop

特に利点はないけど別解その1。
#runtime "hsp3cl"
    repeat 1001
        s = ""
        if (cnt \ 3 == 0) : s  = "Fizz"
        if (cnt \ 5 == 0) : s += "Buzz"
        if (s == "") : mes cnt : else : mes s
    loop
    stop

別解その2。if文を一切使わない方法。#runtime "hsp3cl"
    s = """Fizz""Buzz""FizzBuzz"
    repeat 1001
        s(0) = str(cnt)
        mes s((cnt \ 3 == 0) + (cnt \ 5 == 0) * 2)
    loop
    stop

0 件のコメント: