3. 99 shinichiroes of hamaji
269→265→246→244→237→228byte。
o='%s%s on the wall';f=lambda i:(i,' shinichiro%s of hamaji'%(i-1and'es'or'')) for i in range(99)[::-1]: print'%s, %s.'%(o,o[:4])%(f(i+1)*2) if i:print'Take one down and pass it around, %s.\n'%o%f(i) else:print'Go to the store and buy some more, %s.'%o%f(99)
265byte。
でもこれくらいの小手先じゃ10位以内にも入れなさそうだしなぁ・・・
追記:
o='%s on the wall';f=lambda i:'%d shinichiro%s of hamaji'%(i,i-1and'es'or'') for i in range(99,0,-1):print'%s, %s.\n'%(o%f(i),o[:2]%f(i))+(i-1and'Take one down and pass it around, %s.\n'%o%f(i-1)or'Go to the store and buy some more, %s.'%o%f(99))
printやif-elseがどう見ても字数食ってたのでまとめて、あと改行をLFのみにして246byte。
- o='%s on the wall';f=lambda i:'%d shinichiro%s of hamaji'%(i,i-1and'es'or'') + o='%s on the wall';f=lambda i:'%d shinichiro%s of hamaji'%(i,'es'[:i*2-2])
新たな方向性が見えないので一応削れるとこだけ削る。244byte。
o=' on the wall';f=lambda i:'%d shinichiro%s of hamaji'%(i,'es'[:i*2-2]) for i in range(99,0,-1):print f(i)+o+', %s.\n'%f(i)+(i-1and'Take on e down and pass it around, %s.\n'%(f(i-1)+o)or'Go to the store and buy some more, %s.'%(f(99)+o))
アホなことをしていたのに気付いて削る。237byte。
追記その4:
f=lambda i:'%d shinichiro%s of hamaji on the wall'%(i,'es'[:i*2-2]) for i in range(99,0,-1):print f(i)+', %s.\n'%f(i)[:-12]+(i-1and'Take one down and pass it around, %s.\n'%f(i-1)or'Go to the store and buy some more, %s.'%f(99))
ついにoも消えた。228byte。
[:-12]が美しくないなあ。