meian / atgo

A tool that provides an environment to participate in AtCoder for golang
MIT License
1 stars 0 forks source link

ABCルール対応 #46

Closed meian closed 5 months ago

meian commented 5 months ago

https://info.atcoder.jp/entry/llm-abc-rules-ja

生成AIへの対策として運営から提供されたルールに抵触しないか調査する。

主に、以下の辺り。

  • AtCoderのページから、入出力ファイルを自動生成するツールも、この制限には該当しません。作成したプログラムを自動的に実行するツールなども許容されます。 ただし、入力を解析し、ソースコードを生成するツールは許容されません。空ファイルを作成する、もしくは問題文に依らず同じファイルを作成するツールは許容されます。

対応後にREADMEに対応済の旨を記載する

meian commented 5 months ago

https://github.com/tanakh/cargo-atcoder/blob/dc04ea07e3fde16e22b8b448990ed6984f80b42c/src/main.rs#L200

testの実行では、

のみ行っている

meian commented 5 months ago

許可されない例: https://github.com/kyuridenamida/atcoder-tools の atcoder-tools genコマンド (問題文から入出力を解析しコード生成をするため)

atcoder-tools gen contest-id をすると入出力ファイルだけでなくて提出用ソースのサンプルファイルも出力されている。
(python力が足りなくてその辺りのソースコードはすぐには特定できなかった)

多分これがルールに抵触していそう

meian commented 5 months ago

ソースコード

https://github.com/magurofly/atcoder-easy-test/blob/1dbb75f03ae2b923b74ab6464a63951c8221ba41/v2/src/site/atcoder.ts#L206

オンメモリでキャッシュとして入出力値を持っていそうだがブラウザ上で処理する前提なのでファイル保存はなさそう

meian commented 5 months ago

許可されない例: https://github.com/online-judge-tools/oj の一部機能 (問題文から入力を解析してランダムテストの生成などをするため)

https://github.com/online-judge-tools/oj/blob/1860d4023d0f50610f13c873f4754c87e0ec9f17/docs/getting-started.ja.md#%E3%83%A9%E3%83%B3%E3%83%80%E3%83%A0%E3%83%86%E3%82%B9%E3%83%88

「実装をしてサンプルが合ったので提出をしたのに、 WA や RE になってしまった。しかし原因がまったく分からない」という状況になったとき、どうすればいいでしょうか? これにはランダム生成したケースを使ってのデバッグが有効です。

制約を満たす入力をランダムに生成するようなプログラムを実装する (1.) のプログラムを半自動生成するためのツール online-judge-tools/template-generator も用意されています。

提出ソースでなくて調査補助用のソースの生成もNG

meian commented 5 months ago
  • AtCoderのページから、入出力ファイルを自動生成するツールも、この制限には該当しません。

これが明言されているので入出力をファイルに保存するのは問題なさそうだが、NGの事例から提出ソースだけでなくテストのソースに組み込むのもダメそう。

かつ、

入力を解析し、ソースコードを生成するツールは許容されません。

入力フォーマット でなく 入力 を使うこと自体がNGとなっている。
(フォーマットを直接解析しなくてもサンプルから類推できるため?)

以上から、テストコードに入出力を埋め込む形の機能提供はNGと考えられる。

meian commented 5 months ago

テスト機能として提供できそうな方法としては、

というものであればルールに抵触しない。

DBキャッシュは値を元の形で持ってるのでそのままで大丈夫そう。

ローカルセットアップ時にDBの内容から入出力ファイルを生成して、テストコードは雛形固定で提供するように改修する。