12/04/15 10:22:56.77
まだPythonは出てなかったので
class F(object):
def __init__(self, f):
self.fs = f if hasattr(f, '__iter__') else [f]
def __call__(self, x):
if isinstance(x, int):
s = ''.join(f(x) for f in self.fs if isinstance(f(x), str))
return x if s == '' else s
else:
return F(self.fs + [x])
fizz = F(lambda x: 'Fizz' if x % 3 == 0 else '')
buzz = F(lambda x: 'Buzz' if x % 5 == 0 else '')
gizz = F(lambda x: 'Gizz' if x % 7 == 0 else '')
print [fizz(buzz)(gizz)(x) for x in [1,3,5,7,15,21,35,105]]