Dalam sepak bola asosiasi (juga dikenal sebagai sepak bola), adu penalti adalah tindakan kedua yang bisa digunakan dalam pertandingan yang tidak bisa berakhir dengan seri, setelah perpanjangan waktu (yaitu sepak bola asosiasi lembur).
Dalam adu penalti, wasit utama melempar koin untuk menentukan di mana gol adu penalti terjadi, dan kemudian melemparkan koin lain untuk menentukan tim mana yang mulai lebih dulu. Namun, satu-satunya hal yang relevan dengan tantangan ini adalah apa yang terjadi kemudian, dijelaskan di bawah ini.
Setiap tim memiliki 5 penalti yang tersedia di awal, dan skor penalti adalah 0-0. Jika, pada suatu titik, penalti tim yang tersisa tidak cukup untuk mengubah tim yang saat ini menang, adu penalti berhenti.
Jika tidak ada penalti yang tersisa, tetapi poin kedua tim sama, penalti tambahan diberikan untuk kedua tim. Ini diulangi sampai poin tidak sama.
Setelah tembak-menembak berhenti, tim dengan skor penalti terbesar memenangkan permainan.
Tantangan
Tantangan Anda adalah, diberi dua daftar A
dan B
mewakili tim penalti A dan tim B mana yang mencetak skor masing-masing, untuk menentukan apakah mereka mewakili adu penalti yang sah. Adu tembak adalah valid jika keadaan yang diwakili oleh input dapat dicapai, terlepas dari apakah tim pemenang dapat ditentukan. Perhatikan bahwa Anda mungkin harus menguji kedua skenario (awal Tim A, awal Tim B), karena, jika keadaan yang dijelaskan dalam input dapat dijangkau untuk setidaknya satu skenario, input tersebut valid. Jika panjang daftar berbeda, tim yang diwakili oleh yang lebih panjang mulai lebih dulu (hanya dapat memiliki satu elemen lebih banyak dari yang lain, dan tim daftar yang lebih pendek tidak dapat memulai, karena kemudian tim daftar yang lebih panjang akan menembakkan dua penalti berturut-turut, karena daftar yang lebih pendek akan habis sebelum waktunya).
Contoh terperinci
Anda dapat melompat ke bagian Aturan di bawah ini, ini hanya untuk membantu menyelesaikan tantangan.
Misalkan Anda mendapatkan shoot-out ini sebagai input, di mana -
berarti tidak ada gol yang dicetak dan X
berarti gol dicetak (itu tidak valid):
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.
Sebaliknya, ini adalah contoh yang valid:
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.
Contoh lain, kali ini dengan penalti ekstra:
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.
Berikut adalah input yang valid untuk menentukan pemenang:
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.
Akhirnya, inilah input di mana panjang daftar berbeda:
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.
Aturan
- Tim yang menembak pertama kali bisa A atau B, Anda tidak dapat menganggap satu akan selalu menembak terlebih dahulu.
- Daftar tersebut akan memiliki panjang yang sama, atau panjangnya akan berbeda satu.
- Anda dapat memilih dua nilai berbeda dan konsisten untuk mewakili hukuman yang dicetak / tidak dicetak.
- Daftar juga dapat direpresentasikan sebagai bilangan bulat yang dikonversi dari basis 2 kata sifat , string atau format daftar asli bahasa Anda. Jika format bijective base 2 dipilih, aturan input berlaku untuk angka-angka yang dikonversi ke bijective base 2 (jadi digit
1
dan2
dapat berarti masing-masing mencetak gol dan tanpa skor atau tanpa skor dan skor masing-masing). Biner reguler tidak diperbolehkan , karena seseorang tidak dapat menentukan keberadaan nol terkemuka di representasi biner yang dimaksud. - Ini adalah kode-golf , sehingga solusi terpendek menang. Namun, tolong jangan berkecil hati untuk menjawab bahkan jika sepertinya bahasa Anda tidak dapat "mengalahkan yang khusus".
Uji kasus
Dalam kasus-kasus uji ini, a 0
akan mewakili tanpa tujuan, dan 1
akan mewakili suatu tujuan.
Format:
[Team A], [Team B]
Input yang valid:
[], []
[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]
Input tidak valid:
[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]]
(atau ada test case di mana salah satu dari dua daftar dalam memiliki 2 item) adalah benar, karena permainan masih berlangsung (seperti halnya test case dengan [[0],[1]]
atau [[0],[]]
masih dalam proses)?