概要
可能な限り少ないトークンで、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ポイントです:
printPythonの2にbreak、passなど、変数は2ポイントです
シングルトークンリテラルは1ポイントです:
2131、"Hello, world!"、True関数は3つのポイント(変数を使用するための2つ、余分な1つ)です:
printPython 3rangeなどオペレータは2ポイントです:
+、*、%、and、not、など=1ポイントです:拡張割り当ては2点であり
+=、|=等括弧、インデントなどは0ポイントです。
代入または式ではなく、式を含む行は+ 1ポイントです。
コードを持っていることは1ポイントです。
チャレンジ:
最も低いスコアが勝ちます。幸運を!