サイクルを利用したFizzBuzz

そう言えばLL魂FizzBuzz をサイクルを利用して作るみたいな話があったのを思い出したので実装してみた。

from itertools import cycle, count, islice, izip

fiz = cycle(['', '', 'Fizz'])
buz = cycle(['', '', '', '', 'Buzz'])
cnt = count(1)

for f,b,c in islice(izip(fiz, buz, cnt), 100):
    print f+b or c,

itertoolsは機能的にimportせずともビルトインされていても良いぐらい重要な機能が多いので結構いける。でも islice(seq, 100) は、書き方的にはいけていないが Ruby だとどう書くのだろう。