FibBuzzをJavaで書いてみる
FizzBuzz は時代遅れらしいので FibBuzz を発案します | cod.note
Javaで書いて見ました。CodeGolf的に頑張るのはJavaっぽくない(偏見)のでまあ普通に。
longだとフィボナッチ数列がn=92で桁あふれしてしまうのでBigIntegerでやってます。このため非常に見づらいです。
import java.math.BigInteger;
import static java.math.BigInteger.*;
public class FibBuzz {
public static void main(String[] args) {
final long COUNT = 100l;
final BigInteger THREE = BigInteger.valueOf(3l);
final BigInteger FIVE = BigInteger.valueOf(5l);
BigInteger[] fibPrev = new BigInteger[] { ZERO, ONE };
for (long n = 1l; n <= COUNT; n++) {
final BigInteger fib;
if (n <= 1l) {
fib = BigInteger.valueOf(n);
} else {
fib = fibPrev[0].add(fibPrev[1]);
fibPrev[0] = fibPrev[1];
fibPrev[1] = fib;
}
String output = (fib.mod(THREE).equals(ZERO) ? "Fizz" : "")
+ (fib.mod(FIVE).equals(ZERO) ? "Buzz" : "");
System.out.println("".equals(output) ? String.valueOf(fib) : output);
}
}
}ところでn=0は含まなくていいのかしら。FizzBuzzだとn>=1ですけど。