かずきのBlog@hatena

日本マイクロソフトに勤めています。XAML + C#の組み合わせをメインに、たまにASP.NETやJavaなどの.NET系以外のことも書いています。掲載内容は個人の見解であり、所属する企業を代表するものではありません。

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箇所でしてるのが気に食わん。
でも、これを無くそうとしたらフラグ的な変数を持ち込まないといけない。
これも嫌だ!
悩ましい。