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ですけど。