Bounties
1 ( diberikan )
Saya akan memberikan 50 rep untuk jawaban pertama yang valid
2 ( diberikan )
Saya akan memberikan 100 rep lagi untuk jawaban valid terpendek.
3 ( terbuka untuk pengiriman )
Saya akan memberikan 200 rep untuk yang pertama dengan jawaban valid pendek yang signifikan. Signifikan paling banyak 45% dari jawaban terpendek saat ini ( 564 byte x 0,45 = maks 254 byte ).
Permainan
Anda ingat permainan klasik " Nine Men's Morris " atau sekadar " Mill "? Ada variasi yang disebut Three Men's Morris yang sedikit mirip dengan tic-tac-toe yang bisa berubah.
Aturan
Ini adalah papan permainan kosong:
a b c
1 [ ]–[ ]–[ ]
| \ | / |
2 [ ]–[ ]–[ ]
| / | \ |
3 [ ]–[ ]–[ ]
[ ]
adalah bidang dan |–/\
mewakili rute antara bidang tersebut.
Permainan ini dimainkan oleh dua pemain 1
dan 2
yang masing-masing menempatkan 3 token di papan tulis. Ini sebenarnya sudah terjadi dan kita ada di dalam game. Permainan dimenangkan jika satu pemain dapat membentuk mill
baris vertikal atau horizontal dari 3 token pemain.
Token dapat dipindahkan di papan sepanjang garis penghubung, sesuai dengan aturan ini:
Untuk setiap posisi kosong yang berdekatan (yaitu dari posisi tepi ke tengah, atau dari pusat ke posisi tepi, atau dari posisi tepi ke posisi tepi yang berdekatan)
Seorang pemain harus bergerak kecuali tidak ada posisi kosong yang berdekatan, dalam hal ini lompatan dilewati.
Tantangan
Anda pemain 1
dan gerakan Anda berikutnya. Tulis program atau fungsi, yang menentukan apakah:
- Anda bisa memaksakan kemenangan dengan 2 gerakan atau kurang ( kemenangan yang pasti )
- Anda bisa menang dengan 2 gerakan atau kurang, jika lawan membuat kesalahan ( kemungkinan menang )
- Anda tidak dapat menang dengan 2 gerakan atau kurang, karena Anda akan membutuhkan lebih banyak gerakan atau karena gerakan paksa membuat lawan Anda menang ( mustahil untuk menang )
Persyaratan
- Meskipun Anda pasti menang ketika Anda membuat lawan Anda mati, program Anda harus selesai dalam waktu yang terbatas.
- Anda dapat menulis suatu program atau fungsi.
Memasukkan
Para pemain diwakili oleh 1
dan 2
. 0
mendefinisikan bidang gratis. Anda dapat mengambil input sebagai matriks atau array.
Pasti
A B C D
2 1 0 | 2 1 0 | 1 0 1 | 1 2 2
2 1 2 | 0 1 0 | 1 0 2 | 2 1 O
0 0 1 | 2 2 1 | 0 2 2 | O O 1
A: [2,1,0,2,1,2,0,0,1]
B: [2,1,0,0,1,0,2,2,1]
C: [1,0,1,1,0,2,0,2,2]
D: [1,2,2,2,1,0,0,0,1]
Bisa jadi
A B C
1 0 1 | 1 0 1 | 1 2 2
1 2 2 | 1 2 0 | 0 0 1
2 0 0 | 2 0 2 | 2 1 0
A: [1,0,1,1,2,2,2,0,0]
B: [1,0,1,1,2,0,2,0,2]
C: [1,2,2,0,0,1,2,1,0]
Mustahil
A B
1 0 0 | 1 2 0
1 2 2 | 2 1 0
2 0 1 | 1 2 0
A: [1,0,0,1,2,2,2,0,1]
B: [1,2,0,2,1,0,1,2,0]
Keluaran
Program Anda harus menampilkan / mengembalikan smiley:
- Kemenangan pasti:
:)
- Kemungkinan menang:
:|
- Tidak mungkin menang:
:(
Contohnya
Kemenangan pasti dalam dua gerakan:
[2][1][ ] 1. [2][1][ ]
[2][1][2] -> [2][1][2]
[ ][ ][1] [ ][1][ ]
[2][1][ ] 1. [2][1][ ] [ ][1][ ] 2. [ ][ ][1]
[ ][1][ ] -> [ ][ ][1] -> [2][ ][1] -> [2][ ][1]
[2][2][1] [2][2][1] [2][2][1] [2][2][1]
[1][ ][1] 1. [ ][1][1] [ ][1][1] 2. [1][1][1]
[1][ ][2] -> [1][ ][2] -> [1][ ][2] -> [ ][ ][2]
[ ][2][2] [ ][2][2] [2][ ][2] [2][ ][2]
Kemungkinan menang dalam dua gerakan:
[1][ ][1] 1. [ ][1][1] [ ][1][1] 2. [1][1][1]
[1][2][ ] -> [1][2][ ] -> [1][2][2] -> [ ][2][2]
[2][ ][2] [2][ ][2] [2][ ][ ] [2][ ][ ]
[1][ ][1] 1. [ ][1][1] [ ][1][1] 2. [1][1][1]
[1][2][ ] -> [1][2][ ] -> [1][2][2] -> [ ][2][2]
[2][ ][2] [2][ ][2] [2][ ][ ] [2][ ][ ]
[1][2][2] 1. [ ][2][2] [2][ ][2] 2. [1][2][2]
[ ][ ][1] -> [1][ ][1] -> [1][ ][1] -> [1][1][1]
[2][1][ ] [2][1][ ] [2][1][ ] [2][ ][ ]
Tidak mungkin menang dalam dua gerakan:
[1][ ][ ]
[1][2][2]
[2][ ][1]
Bonus
Jika kemenangan pasti dimungkinkan dan program Anda mengeluarkan gerakan dari satu cara menuju sukses juga seperti a1:a2
(1 gerakan) atau a1:a2,a3:b2
(2 gerakan), Anda dapat menarik 30% dari jumlah byte Anda.
Ini adalah kode golf - jadi jawaban tersingkat dalam byte menang. Celah standar tidak diijinkan.
Terima kasih kepada Peter Taylor yang memperbaiki beberapa kekurangan dan memperbaiki kata-kata di Sandbox .
[1,0,0,2,1,0,2,2,1]
, pemain 2 tidak bisa bergerak - apakah ini kemenangan untuk pemain 1?