逆fizzbuzz問題 by 足軽
NW組2013でお馴染みの @y1r96 のゆーいちろーくんが、
『足軽さん!差し支えなければ、逆FizzBuzz問題のソース書いてください!!』
と突然言われました。
心優しい僕はこう答えました。
『逆FizzBuzzってなんだい?』
しかし、彼は
『ちっ、しらねぇのかよ。』
と一言放ちました。
辛いので、ぐぐってみたらこんなサイトを見つけました。
逆FizzBuzz問題の解説っぽいサイトです。
なるほど。FizzBuzzの逆ってことだね。
理解した僕はすぐさま、ソースを書きました。めでたしめでたし。
jud = lambda x: 3 if x == 'fizz' else 5 def fizz_buzz(st): if len(st)==1: return(jud(st[0])) st_be = jud(st[0]) en_be = jud(st[-1]) if len(st)==2: if st_be==en_be: return (6,9) if st_be==3 else "Oops..." else: return (9,10) if st_be==3 else (5,6) else: mu_be = jud(st[1]) def ans(x,y,z): try: while True: ran = range(x,z+1) if True in [i%y ==0 for i in ran]: if len([i for i in range(x+1,z) if i%3==0 or i%5==0]) != 1: return ans(x+jud(st[0]),y,z) else: return (x,z) else: z += jud(st[-1]) return ans(x,y,z) except RuntimeError: return "Oops..." return ans(st_be,mu_be,en_be) if __name__ == '__main__': print "Usage: input fizz or buzz ... and only 3..." while True: print fizz_buzz(raw_input(":").split()) """ $python hoge.py Usage: input fizz or buzz ... and only 3... :fizz 3 :buzz 5 :fizz buzz (9, 10) :buzz fizz (5, 6) :fizz buzz fizz (3, 6) :fizz fizz (6, 9) :fizz fizz buzz (6, 10) """
足軽『ざっとこんなもんよ。』
ゆういちろう『ソース読んでも理解できない…なんて僕は馬鹿なんだ!』
足軽『気にすることはない、さぁ学べ少年!』
ゆういちろう『いや、お前のソースが汚いからじゃ』
足軽『はひっ』
〜終わり〜
本日のおすすめ:
1: jud = lambda x: 3 if x == 'fizz' else 5
19: if True in [i%y ==0 for i in ran]:
20: if len([i for i in range(x+1,z) if i%3==0 or i%5==0]) != 1: