私は、ゴルフのラウンドのスコアに基づいて現在のティーの順序を決定する必要がある Android アプリケーションに取り組んでいます。ご存じない方のために説明すると、ティー オーダー (オナーズ) とは、プレーヤーが前のホール (現在のホール 1) で最高 (最低) のスコアを持っていたプレーヤーに基づいて、ティーからボールを打つ順序です。同点の場合は、現在の穴 2 を確認する必要があります ...など。順番がわかるまで、またはすべてのスコアを確認した時点で、最初の順番を使用します。プレーヤーの順番がわかったら、そのプレーヤーのスコアの確認をやめます。キャッチは、プレーヤーがどのホールからでも始めることができるということです。また、穴はいくつあっても構いません。したがって、3 番ホールから開始すると、2 番ホールで終了します。したがって、18 番ホールに到達し (18 ホールのコースを想定)、折り返して 1 番ホールから開始します。
Example data:
Holes: 9
Starting hole: 3
Player 1: 0,0,5,4,5,6,3,2,5
Player 2: 0,0,4,2,5,3,3,6,3
Player 3: 0,0,4,3,7,3,2,2,5
Assume the starting order is: Player 1, Player 2, Player 3
Example Output of the order after calculation:
Player 2, Player 3, Player 1
この問題はかなり簡単だと思って攻撃しましたが、思ったより難しいことがわかりました。私は、各プレーヤーをループすることから始めて、最初のホールで各プレーヤーのスコアをループすることから始めて、反復ルートをたどりました...などですが、多くのforループがあることがわかりました大量のifステートメントで醜くなります。私は再帰的な解決策を試すつもりでしたが、少し休憩している間、誰かが何かアイデアを持っているかどうかを知りたかったのです。誰かが私のコードを見たいと思っている場合、私は現在、開発サーバーにJavaがなく、コードがPHPになるため、PHPでテストしています。しかし、Java への移植は簡単です。助けてくれてありがとう!
編集:また、ラウンドが終了したかどうかにかかわらず、いつでもこの情報を知りたいと思うことに注意してください. したがって、彼らが 3 番ホールから始めて 2 ホールしかプレーしていない場合、未プレーのホールを考慮する必要があります。それがすでに明らかでない場合...