Mari bermain golf kode!
Tantangannya adalah menemukan pemenang permainan Tic-Tac-Toe.
Ini telah dilakukan berkali-kali dengan memberikan papan yang memiliki satu pemenang yang jelas tetapi di sini adalah twist:
Sel-sel diberi nomor seperti ini:
1|2|3
-+-+-
4|5|6
-+-+-
7|8|9
Anda mendapatkan larik 9 gerakan seperti itu:
{3, 5, 6, 7, 9, 8, 1, 2, 3}
Ini diuraikan sebagai berikut:
- Pemain 1 menandai sel 3
- Pemain 2 menandai sel 5
- Pemain 1 menandai sel 6
- Pemain 2 menandai sel 7
- Pemain 1 menandai sel 9
- Pemain 1 telah menang
Catatan: Permainan tidak berhenti setelah satu pemain menang, mungkin saja pemain yang kalah berhasil mendapatkan tiga berturut-turut setelah pemain yang menang, tetapi hanya kemenangan pertama yang diperhitungkan.
Tugas Anda sekarang untuk mendapatkan 9 angka sebagai input dan output pemain yang menang dan putaran di mana kemenangan terjadi. Jika tidak ada yang menang, hasilkan sesuatu yang konstan pilihan Anda. Anda dapat menerima input dan memberikan output melalui rata-rata / format standar.
Selamat bersenang-senang!
Beberapa contoh lagi seperti yang diminta:
{2,3,4,5,6,7,1,8,9} => Player 2 wins in round 6
{1,2,4,5,6,7,3,8,9} => Player 2 wins in round 8
{1,2,3,5,4,7,6,8,9} => Player 2 wins in round 8
sumber
[X, Y]
? Dalam hal seri, dapatkah kita menghasilkan nilai konsisten lainnya? Saya sarankan begitu, karena mencetak string yang tepat itu tidak benar-benar bagian dari golf. Untuk ide tantangan di masa depan, saya sarankan menggunakan kotak pasir . :-){3, 5, 6, 7, 9, 8, 1, 2, 3}
" - haruskah3
benar - benar muncul dua kali?Jawaban:
Retina , 114 byte
Cobalah online! Berdasarkan jawaban saya untuk Tic-Tac-Toe - X atau O? . Keluaran
X<N>
jika pemain pertama menang setelahN
giliran,O<N>
jika pemain kedua menang,T
jika tidak ada yang menang. Penjelasan:Membuat papan internal, dan juga menandai setiap gerakan dengan pemain yang bergerak.
Berlaku bergerak.
Mencari kemenangan, dan jika ada yang ditemukan, ganti papan dengan pemenang dan jumlah gerakan yang tersisa.
Jika gerakannya habis dan tidak ada yang menang maka pertandingan itu seri.
Hitung jumlah putaran dari jumlah gerakan yang tersisa.
sumber
MATL , 39 byte
Output adalah
1
danR
, di baris terpisah, jika pengguna 1 menang di babak R ;0
danR
, di baris terpisah, jika pengguna 2 menang di babak R ;Cobalah online! Atau verifikasi semua kasus uji .
Penjelasan
sumber
Javascript (ES6), 130 byte
Penjelasan
sumber
Java (OpenJDK 8) , 445 byte
Cobalah online!
Nilai kembali {1,8} berarti pemain 1 menang di babak 8. Nilai kembali {0,0} berarti menggambar.
sumber
false
bisa diganti dengan1<0
, dan spasi setelah yang pertama]
bisa dihilangkan.//Code that was submitted
dan//End of code
.Kotlin , 236 byte
Yg diperindahkan
Uji
TIO
TryItOnline
sumber
Python 2 , 170 byte
Cobalah online! atau Coba semua test case
sumber
Jelly , 38 byte
Cobalah online!
Kemenangan pemain 1: Kemenangan
[round, 1]
pemain 2:
[round, 2]
Tie:
[0, 0]
sumber
Python 3.6+, 137 byte
Format output adalah
winner number:round
atau-1
untuk seri. Player 2 is0
Player 1 is1
. Input dalam bentuk string tak terhingga dari angka kuadrat 1-diindeks.sumber
Jelly , 35 byte
Tautan monadik mengambil daftar gerakan dan mengembalikan daftar, di
[move, player]
mana para pemain diidentifikasi sebagai1
(pertama yang bertindak) dan0
(kedua untuk bertindak).Cobalah online!
Bagaimana?
sumber
Python 2, 168 byte
Output (pemain, putaran) atau 0 untuk seri.
Memetakan game ke dalam kotak ajaib 3-oleh-3 dan mencari set 3 Os atau X yang berjumlah 15.
sumber
Bersih ,
244... 220 byteCobalah online!
String yang diiterasi menjadi
h
berisi yang tidak dapat dicetak, dan setara dengan"\003\001\000\000"
.sumber
Python 2 ,
140136134 byteCobalah online!
EDIT: 4 byte + 2 byte thx untuk Eric the Outgolfer.
Menghasilkan tuple (playerNumber, roundNumber) atau False jika tidak ada pemenang.
sumber