空手の形の試合の得点計算 ~とても簡単な方法~

昨日は、同点であっても最低点や最高点を加え、順位を求めるマクロを作成した。
作り手の力不足もあって、とても複雑なものになってしまった。

そこで今回は、もっと簡単に求める方法を紹介する。
f:id:Infoment:20181115213214p:plain

そもそも、なぜこんなにややこしいのか。それは、最低点や最高点を加えた場合に起きる「順位の逆転現象」を抑制する必要があるからだ。
例えば、こんな感じ。
f:id:Infoment:20181115213424p:plain

最初から5人の合計で評価した場合、3人のそれと比較すると、1位と2位で逆転現象が発生している。
f:id:Infoment:20181115213812p:plain

「異常値」といってしまうと、採点した審判の先生に失礼になる。だが、中央値を採用することで公平を期す意図は、良く判る。同点の場合のみ最低点や最高点を加えることで、確定した順位が上位または下位に「引っ張られる」ことを防いでいるわけだ。

ならば、ここからは逆転の発想で、最低点や最高点の影響が、最初の合計点を逆転させるほどのものでなければ良いわけで。

例えば、こんな感じだ。
f:id:Infoment:20181115214323p:plain

最高点と最低点を除く三人の合計点を10000倍することで、最低点による逆転を防いでいる。最低点も100倍することで、最高点による逆転も防ぐことができる。今までの苦労が何だったのかと思うくらい、とてもシンプルだ。

と、さも自分が考えたかのように述べているが、これはどこかのサイトに書かれていた内容の横流しだったりする。残念、自分で思いつけたらよかったのに。

ちなみに最初の1万倍は、別に10倍でも1億倍でも構わない。要は逆転しなければ良い訳で。では、なぜ10000倍と100倍が良いかというと、合計を見ただけで全ての情報が分かるからだ。
f:id:Infoment:20181115215544p:plain
マクロで直接算出した場合とは異なり、順位付けの根拠も見える化できている。
素晴らしい。

今回のテーマで思うことは、以下の3つ。

  1. ルールや思考を、そのままコードに置き換えなくても良い場合がある。
  2. 工夫したもん勝ち。
  3. 良いアイディアは、どんどん参考にさせてもらおう。
    (ただし、良識の範囲内で。著作権侵害はダメよ)。

今回のお話は、これでおしまい。

参考まで。