トップページに戻る    次のSQLパズルへ    前のSQLパズルへ

3-37 FizzBuzz問題

SQLパズル

1から100までの数を出力する。
ただし、
3の倍数なら、Fizzと出力する。
5の倍数なら、Buzzと出力する。
3の倍数かつ5の倍数なら、FizzBuzzと出力する。

出力結果
--------
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
17
Fizz
19
以下略


SQL

begin
    for i in 1..100 Loop
        if mod(i,3) = 0 and mod(i,5) = 0 then
            DBMS_Output.Put_Line('FizzBuzz');
        elsif mod(i,3) = 0 then
            DBMS_Output.Put_Line('Fizz');
        elsif mod(i,5) = 0 then
            DBMS_Output.Put_Line('Buzz');
        else
            DBMS_Output.Put_Line(to_char(i));
        end if;
    end Loop;
end;
/


解説

有名なFizzBuzz問題です。

何気に
論理積の概念に加えて
3の倍数かつ5の倍数 ⇒ 3の倍数 (逆は真ではない)
という命題論理が背後にありますね。