晴れ。秋のようで涼しく過ごしやすい。久しぶりにピアニカ練習しようと柏のデッキに行ってみたら盛大に工事中で練習できる場所が無かった、悲しい。
いかに短縮して書けるかの記事を見てたらJavaで普通に書いてみたくなったのでFizzBuzzを書いてみたよ。
public class FizzBuzzWithEnum extends AbstractFizzBuzzTestCase {
private enum Element {
FIZZBUZZ {
@Override protected boolean hit(final int i) {
return i % 15 == 0;
}
@Override protected String toString(final int i) {
return "fizzbuzz";
}
},
FIZZ {
@Override protected boolean hit(final int i) {
return i % 3 == 0;
}
@Override protected String toString(final int i) {
return "fizz";
}
},
BUZZ {
@Override protected boolean hit(final int i) {
return i % 5 == 0;
}
@Override protected String toString(final int i) {
return "buzz";
}
},
OTHER {
@Override protected boolean hit(final int i) {
return true;
}
@Override protected String toString(final int i) {
return String.valueOf(i);
}
};
protected abstract boolean hit(final int i);
protected abstract String toString(final int i);
private static Element find(final int i) {
for (final Element e : values()) if (e.hit(i)) return e;
return OTHER;
}
}
@Override
protected List<String> fizzbuzz(final int limit) {
final List<String> result = new ArrayList<String>();
for (int i=1; i <= limit; i++) {
result.add(Element.find(i).toString(i));
}
return result;
}
}