1

スポーツ予測ゲームのスコアを計算するプログラムを作成しようとしています。ゲームに関連するペナルティの 1 つは、正しいマージンを逃したポイントごとに、スコアから 1 ポイントが差し引かれることです。

たとえば、チーム A がチーム B を 17 対 0 で倒すと予測したが、最終的なスコアは 10 対 14 でした。これは、実際にはチーム A が 4 ポイント差をつけられていたのに、チーム B の勝利マージンをプラス 17 ポイントと予測したため、21 ポイントを失うことを意味します。

別の例として、チーム B がチーム A に 35 対 3 のスコアで勝つと予測したとします。この場合、上記の最終スコアも使用すると、28 ポイントしか失うことはありません。

プログラムをテストしてみると、プレーヤーが適切なチームの勝利を予測したときに、通常は機能することがわかりました。コードの問題がこの勝利マージンのペナルティを扱っていることは知っていますが、正しいスコアが得られる場合とそうでない場合がある理由がわかりません。

// Calculate actual margin of victory 
margin1 = team1score - team2score;
            if (margin1 < 0) {
                margin1 = margin1 * -1;
            }
// Calculate predicted margin of victory
margin2 = prediction2 - prediction1;
            if (margin2 < 0) {
                margin2 = margin2 * -1;
            }

// Calculate difference
if (margin1 == margin2) {
      totalMargin = 0;
} else {
      totalMargin = margin1 - margin2;
      if (totalMargin < 0) {
           totalMargin = totalMargin * -1;
   }
}

ありがとう。

4

1 に答える 1

1

コードが複雑すぎます。

失われたポイントの合計は常に次のとおりです。

Math.abs(  (prediction2 - prediction1) - (score2 - score1))

abs は絶対値です。

于 2013-01-01T22:18:59.880 に答える