何やら流行っているようなのでGroovyでチャレンジ。
ズンドコキヨシまとめ
こういうコードは凄く苦手。。。
一応末尾再帰になっている(はず)のと、zundokoTime
の値をいじればその分ズンがドコまでズンズン続く回数を指定出来まズン。
def rnd = new Random()
def zun = "ズン"
def doko = "ドコ"
def zundokoTime = 4
({ lyric, lyrics = [] ->
if (lyrics == [zun]*zundokoTime + doko) {
print "\キ・ヨ・シ!/"
} else {
print "${lyric} "
trampoline([zun, doko][rnd.nextInt(2)], lyrics in (1..zundokoTime).collect{[zun]*it} ? lyrics + lyric : [lyric])
}
}).trampoline()([zun, doko][rnd.nextInt(2)])
実行結果:
ドコ ドコ ズン ズン ドコ ズン ドコ ドコ ズン ドコ ズン ドコ ズン ズン ズン ドコ ドコ ズン ズン ズン ズン ズン ズン ドコ ドコ ドコ ドコ ドコ ズン ドコ ドコ ズン ズン ドコ ズン ズン ズン ズン ズン ズン ドコ ドコ ズン ドコ ドコ ドコ ドコ ズン ズン ズン ドコ ドコ ズン ドコ ドコ ドコ ズン ズン ドコ ズン ズン ズン ズン ドコ \キ・ヨ・シ!/