概要
可能な限り少ないトークンで、FizzBuzzをPythonで実装します。
チャレンジ
1から100までの10進数を出力するプログラムを作成します。しかし、3の倍数の場合は数字ではなく「フィズ」、5の倍数の場合は「バズ」が印刷されます。3と5の両方の倍数である数字の場合、「FizzBuzz」と印刷します。プログラムは、Pythonの何らかのバージョンで作成する必要があります。
詳細については、1、2、Fizz、4、Buzzを参照してください
得点
スコアは、Python 3のこのプログラムまたはPython 2のこのプログラムによって報告されたコードの抽象構文ツリーのノードの数に等しくなります。プログラムを実行するには、プログラムのコマンドライン引数としてコードのファイル名を指定します。例えば:
python simple_counter.py fizzbuzz.py
これらのプログラムは、Pythonのastモジュールに基づいています。何か問題がある場合はお知らせください。
実際のプログラムで長い文字列を実行したり、出力をハードコーディングしたりといった些細な解決策を防ぐために、いくつかの追加の制限があります。
コード内のトークンは15文字を超えることはできません。上記のプログラムは、この要件を確認します。実装を簡単にするために、上記のプログラムはコメントをトークンとしてカウントすることに注意してください。
コードの実行/評価は禁止されています。
何かが許可されているかどうかについて質問がある場合は、私に尋ねてください。
スコアリングヒューリスティック
通常、プログラムのスコアを計算するには、次のルールで十分です。
ブロック文は1ポイントです:
if
、for ... in ...
、while
、else
、などスタンドアロン文は1ポイントです:
print
Pythonの2にbreak
、pass
など、変数は2ポイントです
シングルトークンリテラルは1ポイントです:
2131
、"Hello, world!"
、True
関数は3つのポイント(変数を使用するための2つ、余分な1つ)です:
print
Python 3range
などオペレータは2ポイントです:
+
、*
、%
、and
、not
、など=
1ポイントです:拡張割り当ては2点であり
+=
、|=
等括弧、インデントなどは0ポイントです。
代入または式ではなく、式を含む行は+ 1ポイントです。
コードを持っていることは1ポイントです。
チャレンジ:
最も低いスコアが勝ちます。幸運を!