mojacoder
mojacoder copied to clipboard
誤差ジャッジの不具合
誤差ジャッジに以下の不具合があるように思われます。
- 想定出力が小数で提出の出力が整数の場合に WA と判定される
- 例:想定出力が
2.0
、提出の出力が2
だった場合に WA となる
- 例:想定出力が
- 想定解が小数で
0.0
の場合に WA と判定される
原因としては、以下の関数に不備があると思っています https://github.com/makutamoto/mojacoder/blob/4337133c3e8de271d64fd70e84d63246e2368fb6/mojacoder-backend/judge-image/check.go#L13-L24
- 提出解の出力が整数にパースできてしまう場合、文字列比較をしてしまうので、想定解が小数で提出解が整数の場合に WA と判定されているのだと思っています。
- 想定出力と提出解の出力が共に整数にパースできるときのみ文字列比較、で基本的には問題なさそうなのですが、厳密には想定解が
1000000000
、提出解が1000000001
で誤差ジャッジをしたい時に困るかもしれないです(そんなことはなさそうですが)
- 想定出力と提出解の出力が共に整数にパースできるときのみ文字列比較、で基本的には問題なさそうなのですが、厳密には想定解が
-
math.Abs((numberC-numberA)/numberC) <= accuracy
で提出解の出力が0.0
の時に NaN が発生し常に false となるので、想定解が小数で0.0
の場合に0.0
と出力すると WA と判定されるのだと思っています。- そもそも相対誤差だと
0.0
が解のときに誤差許容を行うことができないので、絶対誤差もしくは相対誤差が x 以下、とすべきなのかもしれません
- そもそも相対誤差だと