私は40人のゴルフリーグを持っています。私たちは皆、ポットにお金を投げ、最終スコアに基づいて最初の6つの場所を支払います。
同点がなければ、支払いは簡単ですが、たとえば、2人が1位、3人が2位、1人が3位など、多くの場合、バリエーションは無限に見えます。
PHPを使用して、場所ごとに計算された支払いを自動化しようとしていますが、成功していません。提案、ヘルプ、または正しい方向への指示をいただければ幸いです。他の誰かがこのサイトで同様の質問をしようとしたが、質問を組み立てることができなかったことに気づきました。もっといい仕事をしようと思います。
これが私が遊んでいるいくつかのデータです:
$playerNumber=40;
$totalPoints=100;
支払い:
$pointsFirst=0.6*$totalPoints;
$pointsSecond=0.2*$totalPoints;
$pointsThird=0.15*$totalPoints;
$pointsFourth=0.03*$totalPoints;
$pointsFifth=0.02*$totalPoints;
$pointsSixth=0.01*$totalPoints;
上記の例で、6つの場所を支払う場合、支払いは次のように計算されます。2人が1位で同点の場合、1位と2位のポイントを加算し、2で割ります。3人が2位で同点の場合、3位、4位、5位のポイントを加算し、3で割ります。1人が3番目に一人でいる場合、この人は6位のポイントを獲得します。
特定の場所にいる、または同点のプレーヤーの数を数えることができます。
$countFirst=2;
$countSecond=3;
$countThird=1;
$countFourth=2;
$countFifth=1;
$countSixth=2;
この例では、プレーヤーのスコアは72、72、73、73、73、74、75、75、76、77、77になります。
最初は、これはネストされた配列のアプリケーションだと思いました。それから、おそらく配列や配列スライスなどを使用するのが良い方法かもしれないと思いました。森にたどり着くたびに。私は論理を見ていません。
私は3つの場所を支払うために条件付きステートメントを使用しましたが、この方法で6つの場所を支払うことは、私を森の奥深くに置きます。
条件付きステートメントを使用した3か所への支払いの例:
$pointsFirst=0.5*$totalPoints;
$pointsSecond=0.3*$totalPoints;
$pointsThird=0.2*$totalPoints;
if($countFirst>2) {
$ptsA=round($totalPoints/$countFirst,2);
}
elseif($countFirst==2) {
$ptsA=round(($pointsFirst+$pointsSecond)/2,2);
if($countSecond>1) {
$ptsB=round($pointsThird/$countSecond,2);
}
elseif($countSecond==1) {
$ptsB=round($pointsThird,2);
}
}
elseif($countFirst==1) {
$ptsA=round($pointsFirst,2);
if($countSecond>1) {
$ptsB=round(($pointsSecond+$pointsThird)/2,2);
}
elseif($countSecond==1) {
$ptsB=round($pointsSecond,2);
if($countThird>1) {
$ptsC=round($pointsThird/$countThird,2);
}
elseif($countThird==1) {
$ptsC=round($pointsThird,2);
}
}
}
私の要求が明確になったことを願っています。何でも明確にさせていただきます。6か所への支払い計算を効率的に自動化する方法について誰かが何かアイデアを持っているなら、私は永遠に感謝します。ありがとうございました!マイク
リクエストごと:
$scores=array();
$scores[0]=72;
$scores[1]=72;
$scores[2]=73;
$scores[3]=73;
$scores[4]=73;
$scores[5]=74;
$scores[6]=75;
$scores[7]=75;
$scores[8]=76;
$scores[9]=77;
$scores[10]=77;
$payout=array();
$payout[0]=0.6*$totalPoints;
$payout[1]=0.2*$totalPoints;
$payout[2]=0.15*$totalPoints;
$payout[3]=0.03*$totalPoints;
$payout[4]=0.02*$totalPoints;
$payout[5]=0.01*$totalPoints;
$countScores=array();
$countScores[0]=$countFirst;
$countScores[1]=$countSecond;
$countScores[2]=$countThird;
$countScores[3]=$countFourth;
$countScores[4]=$countFifth;
$countScores[5]=$countSixth;