かずきのBlog@hatena

すきな言語は C# + XAML の組み合わせ。Azure Functions も好き。最近は Go 言語勉強中。日本マイクロソフトで働いていますが、ここに書いていることは個人的なメモなので会社の公式見解ではありません。

Fizz-Buzz問題 どうしてプログラムが書けないの?

モトネタはここ!!
どうしてプログラマに・・・プログラムが書けないのか?

なんていうか、プログラム書けないのにプログラマ(SE)を名乗るな!って言いたくなってくる。
でも、現実を見てみると情報系の学科を出た人で、↑のサイトにある問題を解ける人はほとんどいないんだろうなぁ。

引用

1から100までの数をプリントするプログラムを書け。ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

ということで解いてみた。
まずはRuby。さくっとね。

100.times { |i|
  i += 1 # 0からはじまるので1ふやして1〜100にする
  print "Fizz" if i % 3 == 0
  print "Buzz" if i % 5 == 0
  print i unless i % 3 == 0 || i % 5 == 0
  print " "
}

次はJava
Eclipseの起動に時間がかかる(´・ω・´)ショボーン

package okazuki;

public class FizzBuzz {
	public static void main(String[] args) {
		for (int i = 0; i < 100; i++) {
			if (i % 3 == 0) {
				System.out.print("Fizz");
			}
			if (i % 5 == 0) {
				System.out.print("Buzz");
			}
			if (i % 3 != 0 && i % 5 != 0) {
				System.out.print(i);
			}
			System.out.print(" ");
		}
	}
}

お次はC#って言いたいけど普通に書くとJavaと同ようなもんなんで省略。

気に入らない

このプログラム気に入らない。
同じ条件判断を2箇所でしてるのが気に食わん。
でも、これを無くそうとしたらフラグ的な変数を持ち込まないといけない。
これも嫌だ!
悩ましい。