FizzBuzz/Java: Difference between revisions

Content added Content deleted
No edit summary
No edit summary
Line 111: Line 111:


public static void main(String[] args) {
public static void main(String[] args) {
SoundMakerGroup soundMakerGroup = new SoundMakerGroup(new SoundMaker(3, "Fizz"), new SoundMaker(5, "Buzz"));
Sound sound = new Sound(3, "Fizz", new Sound(5, "Buzz"));
for (int i = 1; i <= 100; i++) {
for (int i = 1; i <= 100; i++) {
System.out.println(soundMakerGroup.generate(i));
System.out.println(sound.generate(i));
}
}
}
}


private static class SoundMaker {
private static class Sound {
private final int trigger;
private final int trigger;
private final String sound;
private final String onomatopoeia;
private final Sound next;


public SoundMaker(int trigger, String sound) {
public Sound(int trigger, String onomatopoeia, Sound next) {
this.trigger = trigger;
this.trigger = trigger;
this.sound = sound;
this.onomatopoeia = onomatopoeia;
this.next = next;
}
}


public String generate(int i) {
public Sound(int trigger, String sound) {
return i % trigger == 0 ? sound : "";
this(trigger, sound, null);
}
}
}


public String generate(int i) {
private static class SoundMakerGroup {
StringBuilder sb = new StringBuilder();
private final SoundMaker soundMakers[];
generate(sb, i);

return sb.length() == 0 ? String.valueOf(i) : sb.toString();
public SoundMakerGroup(SoundMaker... soundMakers) {
}
this.soundMakers = soundMakers;
private void generate(StringBuilder sb, int i) {
if (i % trigger == 0)
sb.append(onomatopoeia);
if (next != null)
next.generate(sb, i);
}
}


public String generate(int i) {
String sound = "";
for (SoundMaker soundMakers : soundMakers) {
sound += soundMakers.generate(i);
}
return sound.isEmpty() ? String.valueOf(i) : sound;
}
}
}