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

PythonでFibBuzz

python

Codnote.net
ScalaでFibBuzz - ( ꒪⌓꒪) ゆるよろ日記

FizzBuzzは時代遅れらしいので、ニューウェーブに乗るべく、Pythonで解いてみました

まず、普通の回答

from itertools import islice

def fizzbuzz(x):
    if x % 15 == 0:
        return "fizzbuzz"
    elif x % 3 == 0:
        return "fizz"
    elif x % 5 == 0:
        return "buzz"
    else:
        return x

def fib():
    a, b = 1, 2
    while 1:
        yield a
        a, b = b, a + b

for x in islice(fib(), 100):
    print(fizzbuzz(x))


Golfにトライと言ってもfizzbuzzのとフィボナッチをつなげるだけですが。
ちなみにGolf版はワンライナーではない上、
再帰しているので、数が増えるに連れて指数関数的に遅くなり100に到達するのにかなり時間がかかりますが、あしからず。

f=lambda x:((x>1)and f(x-1)+f(x-2))or 1
i=1
while i<1:n=f(i);print("FizzBuzz"[(n%3!=0)*4:(n%5==0)*4+4]or n);i+=1

Golfはもっと短くなるような気が、誰かお願いします。