- 王道である「FizzBuzz」問題
1〜100を出力する場合に、3で割り切れる場合は「Fizz」、5で割り切れる場合は「Buzz」、両方で割り切れる場合は「FizzBuzz」と出力し、その他は数字を出力する。
これの制限を設けた版が難しいが、今回は制限なしで解こうと思います。
制限を設けた版(例、「%」演算子を使用しない)は、今後書いてみたいと思う。
<?php
for($i=0; $i<100; $i++) {
if($i % 3 == 0 && $i % 5 == 0) {
echo "fizzbuzz\n";
} elseif($i % 3 == 0) {
echo "fizz\n";
} elseif($i % 5 == 0) {
echo "buzz\n";
} else {
echo $i."\n";
}
}
var i;
for(i=1; i<=100; i++) {
if(i%3 == 0 && i%5 == 0) {
console.log("FizzBuzz");
} else if(i%3 == 0) {
console.log("Fizz");
} else if(i%5 == 0) {
console.log("Buzz");
} else {
console.log(i);
}
}
for i in 1..100 do
if i%3 == 0 && i%5 == 0 then
puts :FizzBuzz
elsif i%3 == 0 then
puts :Fizz
elsif i%5 == 0 then
puts :Buzz
else
puts i
end
end
i = 0
for i in range(1, 101):
if i%3 == 0 and i%5 == 0:
print 'FizzBuzz'
elif i%3 == 0:
print 'Fuzz'
elif i%5 == 0:
print 'Buzz'
else:
print i
GO
package main
import "fmt"
func main() {
>-for i := 1; i <= 100; i++ {
>->-if i%3 == 0 && i%5 == 0 {
>->->-fmt.Println("FizzBuzz")
>->-} else if i%3 == 0 {
>->->-fmt.Println("Fizz")
>->-} else if i%5 == 0 {
>->->-fmt.Println("Buzz")
>->-} else {
>->->-fmt.Println(i)
>->-}
>-}
}
Elixir
defmodule Fizzbuzz do
def loop(count) when count == 100 do
IO.puts "Finish";
end
def loop(count) do
hitFizzBuzz(count)
loop(count + 1)
end
def hitFizzBuzz(i) do
case i do
i when rem(i, 3) == 0 and rem(i, 5) == 0 ->
IO.puts "FizzBuzz"
i when rem(i, 3) == 0 ->
IO.puts "Fizz"
i when rem(i, 5) == 0 ->
IO.puts "Buzz"
i ->
IO.puts i
end
end
end
Fizzbuzz.loop(1)