日記

更新頻度はあまり高くはありませんがネタがあったら書いていこうと思います。

プログラミングコンテスト用のダミーデータ生成コマンドを作った。

最近暇な時にプログラミングコンテストの過去問を解くようになりました。ただし、実際に出たことはありません。
そこでよくあるのが、コードを書いてすべてのサンプルインプットで動くのに提出するとランタイムエラーや間違えになることがあります。このようなときに物量作戦であらゆるデータを試してみてどこが違っているのかを試したくなります。しかし、自分でデータを考えるのは面倒。そこでこのコマンドを使えば、データをJSONで定義するだけで、任意個数のサンプルデータを作成できます。

github.com

例えば、

{
  "set": 2,           // The number of data sets.
  "sep":"EOF",          // Separator of the data sets.
  "templates":[         // Data set templates.
    {
      "min":1,          // Min value of the data.
      "max":4,          // Max value of the data.
      "minRows": 1,     // Min rows.
      "maxRows": 9,     // Max rows.
      "minCols": 2,     // Min clos.
      "maxCols": 2,    // Max cols.
      "sep": " ",       // Separator of cols.
      "rowSize": true,  // If we write this field, row size is written in front of the data.
      "colSize": false
    }
  ]
}

このようにJSONファイルを用意して、

$ mkinput -f "input.txt" < src.json

コマンドを実行すると、

8
1 2
3 4
3 2
1 3
4 4
1 4
3 4
2 1
EOF
9
2 2
3 4
4 3
3 3
3 3
4 2
2 3
3 2
4 2
EOF

このようなファイルができます。

書いてて思ったんですがリダイレクトで直接プログラムに食わせられるからこれ標準出力に出力したほうが便利ですね。TODOにしたいと思いま。

またバイナリをダウンロードできるので、下記リンクからどうぞ。

バイナリ