Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tests fail when the expected output is empty #143

Open
hayashikun opened this issue Feb 27, 2021 · 4 comments
Open

Tests fail when the expected output is empty #143

hayashikun opened this issue Feb 27, 2021 · 4 comments

Comments

@hayashikun
Copy link

hayashikun commented Feb 27, 2021

  • 環境: macOS Big Sur
  • cargo-compete version 0.8.7

cargo compete test の際に、期待出力が空文字だと、
println!("")のような空文字(改行あり)出力はWrong Answerになります。

print!("")だと通るので、"" != \nなのだと思います。

AtCoderではprintln!("") でも空文字として通ります。

例えば、↓などです。
https://atcoder.jp/contests/dp/tasks/dp_f

よろしくお願いします🙇‍♂️

@qryxip
Copy link
Owner

qryxip commented Mar 2, 2021

testコマンドにおける判定方法はYAMLファイルのmatchフィールドによって決まり、new/add/downloadコマンド時でデフォルトで設定されるのはLinesです。これは(サイト問わず)古い問題とかでジャッジサーバーで動いているcheckerの実装があまりにも適当だと余計な空白を入れると通らない、といったことが起こるので厳密にしたいけどLF/CRLFとnoeolくらいは許してもいいか...という理由だったと思います。記憶の限りでは。

今日matchのバリアントとしてSplitWhitespaceを追加しました。(リリースはまだしていません)

https://github.com/qryxip/snowchains/blob/f3a1a7788eccbaa8428e6443f7b5d4e698b3f834/snowchains_core/src/testsuite.rs#L797-L815

で、これからの方針として以下のものが考えているのですが、どれにしようか迷っています。

  1. デフォルトをLinesからSplitWhitespaceにする
  2. sample outputが0単語 OR 1単語の場合のみSplitWhitespaceにするようにする
  3. compete.tomlにデフォルトのmatchの値についての設定を追加する。
    Checkerでユーザーがスクリプトを書いて好みの判定方法にすることができそうです。
  4. SplitWhitespaceだけ追加してデフォルトをそのままにする。
  5. 別のmatch方式の追加 (""だけ特別扱いするようなもの等)

@hayashikun
Copy link
Author

ありがとうございます

まだ競プロのジャッジのシステムやこのプロジェクトについても完全に理解できていないので的外れだったらすみません

SplitWhitespace が追加されたのことで、デフォルトを SplitWhitespace にして、
Sample outputが複数行のときは Lines にするのが良いのではないかと思いました

ただ、その場合これまでのtestcaseのほとんどが変わってしまうのと、
古いジャッジサーバーで余計な空白を入れると通らないなどがあるとのことなので、
Sample outputに空行が存在し、他の出力が1行のみの場合 SplitWhitespace にするのでも良いと思います

�2の場合、abc191-cなどは Linesだと WAになるかと思います
https://atcoder.jp/contests/abc191/tasks/abc191_b

@qryxip
Copy link
Owner

qryxip commented Mar 10, 2021

とりあえずsplit_whitespaceで一致するときは警告を出すだけにしてv0.8.8をリリースしました。

Screenshot

というのもDropbox上のテストケースだと""ではなく"\n"になってたりするのでそもそも""として解釈するべきではないんじゃないかと思い始めたので。といってもHTML上で両者の見分けをどうすればいいのかがわからないのですが...

Screenshot2

@hayashikun
Copy link
Author

対応ありがとうございます。
確かに、outがWebでは<pre></pre>だけど、Dropboxだと1行あるようなケースがありますね

SplitWhitespace の警告があれば個別対応できそうなので、とてもありがたいです。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants