Tulis program untuk memainkan game Connect 4 . Anda diberi status papan sebagai input dan Anda harus memutuskan kolom mana yang akan menempatkan bagian Anda untuk mendapatkan 4 berturut-turut (horizontal, vertikal, atau diagonal) atau memblokir lawan Anda dari melakukan hal yang sama.
Papan adalah larik 6x7, di mana setiap sel mungkin kosong (''), berisi bagian Anda ('X') atau bagian lawan Anda ('O'). Papan contoh:
O
XX X
XOX OO
XOO OXO
OXXOXXO
XOXOXOX
Anda ingin bermain di kolom 3 (kolom 0-6, diberi nomor dari kiri) untuk kemenangan diagonal. Jadi, Anda menghasilkan:
3
Kode Anda harus menampilkan nomor kolom, dan harus memenuhi kriteria berikut:
- Anda tidak bisa bermain di kolom yang sudah memiliki 6 buah di dalamnya.
- Jika setidaknya ada satu gerakan yang menang, Anda harus memainkan salah satunya.
- Jika Anda dapat mencegah lawan untuk menang pada langkah berikutnya, Anda harus melakukannya.
Perhatikan bahwa permainan optimal tidak diperlukan, hanya saja Anda mengambil kemenangan langsung atau mencegah kemenangan langsung lawan Anda. Jika lawan Anda memiliki lebih dari satu cara untuk menang, Anda tidak perlu memblokirnya.
Anda diberikan papan pada input standar dan harus mencetak nomor kolom di mana Anda ingin bermain pada output standar. Papan dijamin akan terbentuk dengan baik (tidak ada lubang, setidaknya satu langkah yang mungkin) dan belum memiliki kemenangan untuk salah satu pemain.
Kode terpendek menang.
Contoh 1
X
O
X
O
OOO X
XXX O
Anda harus memainkan kolom 0 atau 4 untuk menang.
Contoh 2
X
X X
O O
XOX XO
XXO XOX
XXO XXO
Anda harus bermain kolom 3 untuk memblokir kemenangan langsung lawan Anda.
Contoh 3
X
XO
OX O
XO XX
XXO OOO
OOO XXO
Anda tidak dapat memenangkan atau menghentikan lawan dari kemenangan, jadi Anda dapat memainkan kolom 1-6 (0 penuh).
Contoh 4
X
O
X
OOO
XOX
OXOX
Anda tidak dapat bermain di kolom 3, karena memungkinkan lawan Anda menang dengan segera. Anda dapat bermain di kolom 1-2 atau 4-6.
sumber