コンテストシステム

OCamlのソースが仕様にあっているかを人間が見ないで判断するために、コンテストシステムを作ろうとしてみた。
元々のOCamlソースコードが標準入力を読んで標準出力に書くという形式でないので意外とめんどくさい。
今考えていること:

  • cgiにして提出者が使えるようにする
    • セキュリティの問題。networkとUnixモジュールを殺せばいける?
  • 何故か仕様が異なる(関数名が違う、引数の数が違う)
  • スタックオーバーフロー、無限ループ
    • タイムアウトを監視できる環境で実行しないと(めんどい)
    • 現状はPerlで書いてるけど、system関数を止める方法とかあるのか?
  • 「このテストケースで間違えとなりました」という出力がめんどい
    • intだったりstringだったりint*intだったり…
    • 現状はテストデータもOCamlのデータとして直接書いてるのが問題
      • 外部から読み込むようにしてもいいけど、そうすると今度は基本データ型以外(関数とか)をテストデータとして使っているとやっかい
    • 問題の仕様を「標準入力を読んで標準出力に書く」にしてしまう
      • やりすぎ?後々困るかも

以下、妄想中…。