https://mao.snuke.org/ の解をテストするのに便利なツールです。
- Python 3.6 以上
- テストケース定義 & 評価
- 貪欲最適化で不要なルールを除去 (optimize/bruteforce.py)
- solutions/template.py をコピーします。これがそのまま Problem 6 用の例になっています。
- judge を実装します。sが入力で、これに対する出力を返せばよいです。任意の Python 3 コードを使えます。
- test_cases を実装します。これはテストケースを返すジェネレータです。よくわからなければ関数定義っぽくイテレータが定義できて、次の要素を返すのに yield 文を使うとだけ覚えておけばよいです。
- (必要であれば)step_limit をオーバーライドします。Problem 42 のようにステップ数に独自の制限があるときに必要になります。
- 準備完了です。solution をいろいろ書き換えながらスクリプトを実行してみましょう。
コマンドラインからだと、リポジトリのルートから次のコマンドで実行できます(template は適宜書き換え)。
python -m solutions.template
テストに成功すれば、solutions/output.txt に最適化された解が出力されます。
- mao/interp.py はコマンドラインツールとして機能します
- solutions/utils.py の binary と pad_binary はテストケース生成に便利です。