でサッカー(また、サッカーとしても知られる)、ペナルティシュートアウトは、余分な時間(すなわち、サッカーの残業)の後、タイで終了することができない試合で使用することができる第二タイブレーカー尺度です。
ペナルティーシュートアウトでは、主審はコインを投げてどのゴールでシュートアウトが起こるかを決定し、次に別のコインを投げてどのチームが最初に開始するかを決定します。ただし、この課題に関連する唯一のことは、次に説明するとおりです。
各チームには開始時に5つのペナルティがあり、ペナルティスコアは0〜0です。いずれかの時点で、チームの残りのペナルティーが現在勝っているチームを変更するのに十分でない場合、シュートアウトは停止します。
残りのペナルティーはないが、両チームのポイントが等しい場合、追加のペナルティーが両チームに付与されます。これは、ポイントが等しくなくなるまで繰り返されます。
シュートアウトが停止した後、ペナルティスコアが最大のチームがゲームに勝利します。
チャレンジ
あなたの課題は、二つのリスト与えられた、あるA
とB
罰則チームAとチームBは、彼らが有効なPK戦を表すかどうかを判断するために、それぞれ得点表します。勝利チームを決定できるかどうかに関係なく、入力によって表される状態に到達できる場合、シュートアウトは有効です。入力に記述された状態が少なくとも1つのシナリオに到達できる場合、入力は有効であるため、おそらく両方のシナリオ(チームA開始、チームB開始)についてテストする必要があることに注意してください。リストの長さが異なる場合、長いリストのチームが最初に開始します(他のリストよりも1つの要素しか持つことができず、短いリストのチームは開始できません。短いリストは時期尚早に使い果たされるため、連続して表示されます)。
詳細な例
以下の「ルール」セクションにスキップできます。これらは、課題の解決に役立つためのものです。
このシュートアウトを入力として受け取り、-
ゴールが得られなかったこととゴールが得られたことをX
意味するとします(それは無効です):
Team A: - X X X X
Team B: - - - - X
Assuming team A starts first:
Team A: - (0 - 0) (max possible score 4 - 5)
Team B: - (0 - 0) (max possible score 4 - 4)
Team A: X (1 - 0) (max possible score 4 - 4)
Team B: - (1 - 0) (max possible score 4 - 3)
Team A: X (2 - 0) (max possible score 4 - 3)
Team B: - (2 - 0) (max possible score 4 - 2)
Team A: X (3 - 0) (max possible score 4 - 2)
Team A already has a higher score than B could ever have, but the input hasn't
ended yet, so it's invalid if team A is first.
Assuming team B starts first:
Team B: - (0 - 0) (max possible score 5 - 4)
Team A: - (0 - 0) (max possible score 4 - 4)
Team B: - (0 - 0) (max possible score 4 - 3)
Team A: X (1 - 0) (max possible score 4 - 3)
Team B: - (1 - 0) (max possible score 4 - 2)
Team A: X (2 - 0) (max possible score 4 - 2)
Team B: - (2 - 0) (max possible score 4 - 1)
Team A already has a higher score than B could ever have, but the input hasn't
ended yet, so it's invalid if team B stars first.
The input is invalid no matter which team starts first, so it's considered
invalid.
それどころか、有効な例は次のとおりです。
Team A: X X X
Team B: - - -
Assuming team A starts first:
Team A: X (1 - 0) (max possible score 5 - 5)
Team B: - (1 - 0) (max possible score 5 - 4)
Team A: X (2 - 0) (max possible score 5 - 4)
Team B: - (2 - 0) (max possible score 5 - 3)
Team A: X (3 - 0) (max possible score 5 - 3)
Team B: - (3 - 0) (max possible score 5 - 2)
It can be determined that team A wins, however the input has ended, so it's
valid if team A starts first. Therefore, the input is valid.
もう1つの例、今回は追加のペナルティがあります:
Team A: X - X - - - X -
Team B: - X X - - - X X
Assuming team A starts first:
Team A: X (1 - 0) (max possible score 5 - 5)
Team B: - (1 - 0) (max possible score 5 - 4)
Team A: - (1 - 0) (max possible score 4 - 4)
Team B: X (1 - 1) (max possible score 4 - 4)
Team A: X (2 - 1) (max possible score 4 - 4)
Team B: X (2 - 2) (max possible score 4 - 4)
Team A: - (2 - 2) (max possible score 3 - 4)
Team B: - (2 - 2) (max possible score 3 - 3)
Team A: - (2 - 2) (max possible score 2 - 3)
Team B: - (2 - 2) (max possible score 2 - 2)
First 5 penalties result in a tie, so we move on to extra penalties.
Team A: -, Team B: - (2 - 2)
Team A: X, Team B: X (3 - 3)
Team A: -, Team B: X (3 - 4)
It can be determined that team B wins, however the input has ended, so it's
valid if team A starts first. Therefore, the input is valid.
勝者を決定するには早すぎる有効な入力を次に示します。
Team A: X X - -
Team B: - X - X
Assuming team A starts first:
Team A: X (1 - 0) (max possible score 5 - 5)
Team B: - (1 - 0) (max possible score 5 - 4)
Team A: X (2 - 0) (max possible score 5 - 4)
Team B: X (2 - 1) (max possible score 5 - 4)
Team A: - (2 - 1) (max possible score 4 - 4)
Team B: - (2 - 1) (max possible score 4 - 3)
Team A: - (2 - 1) (max possible score 3 - 3)
Team B: X (2 - 2) (max possible score 3 - 3)
The input has ended before the winner can be determined, so it's valid if team A
starts first. Therefore, the input is valid.
最後に、リストの長さが異なる入力を次に示します。
Team A: - - -
Team B: X X - X
Since team B shot more penalties, it starts first:
Team B: X (0 - 1) (max possible score 5 - 5)
Team A: - (0 - 1) (max possible score 4 - 5)
Team B: X (0 - 2) (max possible score 4 - 5)
Team A: - (0 - 2) (max possible score 3 - 5)
Team B: - (0 - 2) (max possible score 3 - 4)
Team A: - (0 - 2) (max possible score 2 - 4)
Team B: X (0 - 3) (max possible score 2 - 4)
It can be determined that team B wins, however the input has ended, so it's
valid.
ルール
- 最初に撃つチームはAまたはBのいずれかであり、常に最初に撃つとは限りません。
- リストの長さは同じであるか、リストの長さが1つ異なります。
- スコア付き/スコアなしのペナルティーを表すために、2つの異なる一貫した値を選択できます。
- リストは、全単射の基数 2、文字列、または言語のネイティブリスト形式から変換された整数として表すこともできます。全単射の基数2形式が選択された場合、入力規則は全単射の基数2に変換された数値に適用されます(したがって、数字
1
と2
それぞれスコア付きとスコアなし、またはスコアなしとスコア付きのいずれかを意味します)。通常のバイナリは許可されません。意図したバイナリ表現に先行ゼロが存在するかどうかを判断できないためです。 - これはcode-golfであるため、最短のソリューションが優先されます。ただし、あなたの言語が「専門的な言語に勝る」ことができないと思われる場合でも、答えを落胆しないでください。
テストケース
これらのテストケースでは、a 0
は目標なし1
を表し、aは目標を表します。
フォーマット:
[Team A], [Team B]
有効な入力:
[], []
[0], [0]
[0], [1]
[1], [1]
[0], []
[1, 1, 1, 1], [0, 0, 1, 1]
[0, 1, 1, 1, 1], [0, 1, 1, 0]
[0, 0, 0, 0, 1], [0, 0, 0, 1, 0]
[0, 0, 0, 0, 1], [0, 0, 0, 1]
[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1, 1]
[1, 1, 1, 1, 1, 1], [1, 1, 1, 1, 1]
[0, 1, 1, 1, 1], [0, 1, 1, 0, 1]
[1, 1, 1], [0, 0, 0]
[1, 1, 1, 1], [0, 0, 1]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
無効な入力:
[0, 1, 1, 1, 1], [0, 1, 1, 0, 0]
[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 1, 0]
[0, 0, 0, 0, 0, 1], [0, 0, 0, 0, 1]
[1, 1, 1, 0], [0, 0, 0]
[1, 1, 1, 1], [0, 0, 0]
[0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0], [0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1]
[1, 0, 1, 0, 1], [0, 1, 0, 1, 0, 1]
[0, 0, 0, 0, 1], [0, 1, 1, 1, 0]
[[0,0],[1,1]]
のゲームはまだ(と、単にテストケースのように起こっていることから、(または2つの内のリストの1が2つの項目を持つすべてのテストケース)truthyである[[0],[1]]
か、[[0],[]]
まだ進行中ですか)?