Pythonで文を使わないFizzBuzz
FizzBuzz問題を使って社内プログラミングコンテストを開催してみた - give IT a try
Pythonで"if"を使わない"FizzBuzzチェック関数"を三種類ほど実装する - 蟲!虫!蟲!
Pythonで文を使わずに式のみでFizzBuzzで作ってみた。コマンドラインで引数を与えてください。
lambda式、ジェネレータ式、リスト内包表記あたりはおなじみだろうけど、__import__関数なんて初めて使った。
( lambda end, stdout: [ stdout.write( str( (type(n) == str and n) or (n % 3 and n) or 'Fizz' ) + '\n' ) for n in ( (type(n) == str and n) or (n % 5 and n) or 'Buzz' for n in ( (n % 15 and n) or 'FizzBuzz' for n in range(1, end + 1) ) ) ] )( int(__import__('sys').argv[1]), __import__('sys').stdout )
Python 2.xでも3.xでも動くように書いたつもりだけど確認は2.7でしかしてないです。print関数を使いたかったのだけど、上手くいかず、苦肉の策で標準出力にぶっこんだ。
from __future__ import print_functionを__import__関数からやろうとすると、ちゃんとprint関数がインポートされることはされるのだけど、なぜかグローバルなところ(=関数や内包表記の外)でしか使えなかった。くやしい。
あとpep8通るようにしようと思ったけど醜すぎたので諦めた。