いろんなプログラミング言語で FizzBuzz
プログラマ界隈で頭の体操としてよく話題に上がるトイプロブレム "FizzBuzz"をいろいろなプログラミング言語でやってみたのでここに記録します。
FizzBuzz のルール
1, 2, 3, ..., 100 と自然数を入力すると以下の出力を返します。入力が3で割り切れるとき出力は "Fizz"。5で割り切れるとき出力は "Buzz"。3で割り切れ、かつ5で割り切れるとき出力は "FizzBuzz"。それ以外のときは自然数をそのまま出力します。
出力サンプル
1
2
Fizz
4
Buzz
Fizz
7
8
Fizz
Buzz
11
Fizz
13
14
FizzBuzz
16
...
今回はなるべく行数を少なくする方向でやってみました。では言ってみましょー。
Python
print(list(map(lambda i:”FizzBuzz” if i%15==0 else “Fizz” i%3==0 else “Buzz” if i%5==0 else str(i),list(range(1,101)))))
Ruby
p (1..100).map{|i| i%15==0? “FizzBuzz”: i%3==0? “Fizz”: i%5==0? “Buzz”:i.to_s}
SQL
— FizzBuzz
SELECT(CASE WHEN mod(a.i, 15) = 0 THEN 'FizzBuzz' WHEN mod(a.i, 3) = 0 THEN 'Fizz' WHEN mod(a.i, 5) = 0 THEN 'Buzz' ELSE a.i END) FROM(SELECT @i := 1 AS i UNION SELECT @i := @i + 1 AS i FROM information_schema.COLUMNS LIMIT 100) a
golang
// FizzBuzz
package main
import {
“fmt”
}
func main(){
for i:= 1; i <= 100; i++ {
if i % 15 == 0 {fmt.Println(“FizzBuzz”)} else if i % 3 == 0 {fmt.Println(“Fizz”)} else if i % 5 == 0 {fmt.Println(“Buzz”)} else {fmt.Println(i)}
}
}
Haskell
f :: Int -> String;
f i | i `mod` 15 == 0 = “FizzBuzz” | i `mod` 3 == 0 = “Fizz” | i `mod` 5 == 0 = “Buzz” | otherwise = show i
main = print $ map(¥i -> f i)[1..100]
JavaScript
// FizzBuzz
for(var i = 0; i <= 100; i++) console.log(!(i % 15) ? “FizzBuzz”: !(i % 3) ? “Fizz”: !(i % 5) ? “Buzz”: i);
PHP
<?php
// FizzBuzz
for($i = 0; $i <= 100; $i++){
echo ($i % 15 == 0 ? “FizzBuzz”: ($i % 3 == 0 ? “Fizz”: ($i % 5 == 0 ? “Buzz”: $i))) . “¥n”;
}
以上です。それでは。
(終)