読者です 読者をやめる 読者になる 読者になる

FibBuzzをJavaで書いてみる

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