4月のこの時期、新生活や就職活動などでFizzBuzzを書く機会があるかも?
まぁこれに端を発してから、ちょっとしたテストに用いられる場合もあったりと、
1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。
早速ブラウザ上でコードを書いて実行できるpaiza.ioにて、
使ったことがある言語を選択して書いてみました※。
※3と5両方の倍数の判定は、結果15で割り切れる判定。
Go
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)
}
}
}
Scala
object Main extends App{
(1 to 100).map{
case i if ((i % 15) == 0) =>"FizzBuzz"
case i if ((i % 3) == 0) => "Fizz"
case i if ((i % 5) == 0) => "Buzz"
case i => i
}.foreach(println(_))
}
PHP
<?php
for ($i=1; $i <= 100; $i++) {
if (($i % 15) == 0) {
echo "FizzBuzz";
} else if (($i % 3) == 0) {
echo "Fizz";
} else if (($i % 5) == 0) {
echo "Buzz";
} else {
echo $i;
}
echo "\n";
}
Java
public class Main {
public static void main(String[] args) throws Exception {
for (int i = 1; i <= 100; i++) {
if ((i % 15) == 0) {
System.out.println("FizzBuzz");
} else if ((i % 3) == 0) {
System.out.println("Fizz");
} else if ((i % 5) == 0){
System.out.println("Buzz");
} else {
System.out.println(i);
}
}
}
}
Ruby
for i in 1..100
if i%15 == 0
puts "FizzBuzz!"
elsif i%3 == 0
puts "Fizz!"
elsif i%5 == 0
puts "Buzz!"
else
puts i
end
end
erlang,python,c,bash,vba,javascript...時間あるときにupしたい。
他にも色んな書き方あるから、考えて試してみると楽しい。
Go
package main
import "fmt"
func main(){
var output string
for i := 1; i <= 100; i++ {
output = ""
if i%3 == 0 {
output += "Fizz"}
if i%5 == 0 {
output += "Buzz"}
if output == "" {
fmt.Println(i)
continue
}
fmt.Println(output)
}
}
自分は、go,rubyとそれ以外での書き方である種の傾向があるのがわかってみたり。
また時間を問われない場合は、関数等を定義して書くとよりスマート。
自分は今の会社入るときとか、プロジェクトに参画する前、
商談時にPCドンと置いて書いてみてという機会があったかな。
だいぶ前にブログで紹介されていた FizzBuzzを使ったプログラミングコンテストの話とか面白かったのも思い出した。