ふるつき2

裏ブログです。うそです

動的配点アルゴリズムに超増加列を用いるとどうか

つまり、どれだけ簡単な問題を解いたとしても1番難しい問題を1問解くのには敵わない、ということにする。問題の配点は、どれだけ解かれたかという数ではなく、どの問題よりも解かれたか、という順序でのみ決まる*1

例えば、100solves, 50solves, 25solves, 1solves の問題があったら、それらの問題の配点は 100点, 200点, 400点, 800点にするといった具合。

当然、全ての問題の間でこのアルゴリズムを使うと、最も難しい問題を解かないと優勝はない、ということになってしまうから、カテゴリ間でこの順序づけで配点が行われる、くらいでどうだろうか。

こうすると難しい問題を解くインセンティブが大きくなるし、真に難しい問題を解けるチームが勝ちやすくなるので良さそうな気がする。一方で、その問題の難しさが、カスさによって担保されているとかだとCTF自体の質を思いっきり損なうのでまずい。カス問題がたまたま1チームしか解けなくても、他の10solvesの問題とそんなに点差がなければちょっと許されるかもしれないが、明らかに他の10solvesの問題より配点が大きいと許されなさそう。

あとは、スコアボード上で上位のチームと下位のチームの点数の差がめちゃめちゃなことになりそう。自分達が4000点で、1位のチームは12000点です、みたいなことになると感覚的に絶望がくる。1問の配点が1000点とか2000点くらいあったとしても、なんとなくの感覚では大差で厳しい、と思うような気がする。

*1:他のカテゴリとの兼ね合いも考えたらめちゃめちゃ解かれている問題はもっと点を下げるとかはしても良いかも