ページ

2014/04/06

言葉遊びFizzBuzzをJavaで考えてみよう

FizzBuzzとは、英語圏の言葉遊びである。

簡単に説明すると、世界のナベアツの3の倍数の時にアホになって、5の倍数の時に犬っぽくなるっていうネタですね。

FizzBuzz問題というものがありまして、このゲームをコンピュータ画面に表示させるプログラムとして作成するというものです。
これによってコードが書けるか書けないかを見分けていたようです。



1〜100を表示する中で「3の倍数の時は“Fizz”」「5の倍数の時は“Buzz”」「15の倍数の時は“FizzBuzz”」に置き換えて表示するというものです。

また、縛り(制限時間n分、剰余(%など)不使用、n行で…など)をルールに加えてコードの記述をしたりもするようです。


今回は、簡単に考えて記述したものと、自分なりに短縮したコードを記述します。


普通
public class FizzBuzz {
    public static void main(String[] args) {
        for(int i=1; i<=100; i++) {
            if(i%3==0 && i%5==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);
            }
        }
    }
}
クラス修飾子にはpublicを指定するかしないかのどちらかだけなので省略を選びます。
また“for”や“if”の「{}(中括弧)」は一定条件下で省略することが出来ます。
基本的には「{}」は省略しない方がインテントを付けることで可読性を上げることが出来ますが、今回の場合はコードを短くするために省略します。

省略1
class f{
    public static void main(String[] a){
        for(int i=1;i<=100;i++)
            if(i%3==0&&i%5==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);
    }
}

System.out.printlnも何回も記述する必要はないので一つにまとめます。
“if”文も三項演算子を使い、少しでも省略出来るようにします。

省略2
class f{
    public static void main(String[]a){
        for(int i=0;i++<100;)
            System.out.println((i%3<1?"Fizz":"")+(i%5<1?"Buzz":i%3<1?"":i));
    }
}


見やすいように改行をしてスペースを入れましたが、すべて消去した場合は一行で収まると思います。



Javaの動作環境:java version "1.7.0_51"

0 件のコメント:

コメントを投稿