Peg solitaire adalah game populer yang biasanya dimainkan sendiri. Gim ini terdiri dari sejumlah pasak dan papan yang dibagi menjadi kisi - biasanya papan tidak berbentuk persegi panjang tetapi untuk tantangan ini kami akan menganggapnya demikian.
Setiap gerakan yang valid memungkinkan seseorang untuk menghapus pasak tunggal dan tujuannya adalah untuk bermain sedemikian rupa, sehingga ada satu pasak tersisa. Sekarang, langkah yang valid harus berada dalam satu arah (utara, timur, selatan atau timur) dan melompati satu pasak yang dapat dihapus.
Contohnya
Membiarkan .
ruang kosong di papan dan angka adalah pasak, langkah berikut akan memindahkan 1
satu ke kanan dan menghapus 2
dari papan:
..... .....
.12.. -> ...1.
..... .....
Suatu langkah harus selalu melompati satu pasak, sehingga yang berikut ini tidak valid:
...... ......
.123.. -> ....1.
...... ......
Berikut adalah beberapa konfigurasi yang valid setelah setiap gerakan:
...1... ...1... ..71... ..71...
.2.34.5 ---> .24...5 ---> .2....5 ---> ......5
.678... (4W) .678... (7N) .6.8... (2S) ...8...
....... ....... ....... .2.....
Tantangan
Diberikan konfigurasi papan awal dan beberapa konfigurasi lainnya, keluaran apakah konfigurasi lainnya dapat dicapai dengan memindahkan pasak secara berurutan seperti dijelaskan di atas.
Aturan
- Input akan berupa matriks / daftar daftar / ... dari nilai-nilai yang menunjukkan ruang kosong (mis. Nol atau salah) atau pasak (mis. Tidak nol atau benar)
- Anda dapat mengasumsikan dan
- Anda dapat menggunakan true / non-zero untuk menunjukkan ruang kosong dan sebaliknya jika itu membantu
- Output akan berupa dua nilai yang berbeda (salah satu nilainya mungkin berbeda) yang mengindikasikan apakah konfigurasi akhir dapat dicapai (mis. Falsy / truthy ,
[]
/[list of moves]
..)
Uji kasus
initial goal -> output
[[1,0,0],[1,1,0],[0,1,0]] [[0,0,0],[0,1,0],[1,1,0]] -> True
[[1,0,0],[1,1,0],[0,1,0]] [[0,0,1],[0,1,1],[0,0,0]] -> False
[[0,0,0],[1,0,0],[0,0,0]] [[0,0,0],[0,0,1],[0,0,0]] -> False
[[0,0,0],[1,1,0],[0,0,0]] [[0,0,0],[0,1,1],[0,0,0]] -> False
[[0,0,0,0],[1,1,1,0],[0,0,0,0]] [[0,0,0,0],[0,0,0,1],[0,0,0,0]] -> False
[[1,0,0],[1,1,0],[1,1,1],[1,1,1]] [[0,0,1],[0,1,0],[1,0,0],[0,0,1]] -> True
[[1,0,0],[1,1,0],[1,1,1],[1,1,1]] [[1,0,0],[0,0,0],[0,0,0],[0,0,0]] -> False
[[1,0,1,1],[1,1,0,0],[1,1,1,0],[1,0,1,0]] [[0,0,1,0],[1,0,0,0],[1,0,1,0],[1,0,0,1]] -> True
[[1,0,1,1],[1,1,0,0],[1,1,1,0],[1,0,1,0]] [[0,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,0]] -> False
[[1,0,0,0],[1,1,0,0],[1,1,1,0],[1,0,1,0]] [[0,0,0,0],[0,0,0,0],[0,0,1,0],[0,0,0,0]] -> True
[[0,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,0]] [[0,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,1]] -> False
[[0,0,0,0],[0,1,0,0],[0,0,1,0],[0,0,0,0]] [[1,0,0,0],[0,0,0,0],[0,0,0,0],[0,0,0,0]] -> False
[[0,0,0,1,0,0,0],[0,1,0,1,1,0,1],[0,1,1,1,0,0,0],[0,0,0,0,0,0,0]] [[0,0,0,1,0,0,0],[0,1,0,1,1,0,1],[0,1,1,1,0,0,0],[0,0,0,0,0,0,0]] -> True
[[0,0,0,1,0,0,0],[0,1,0,1,1,0,1],[0,1,1,1,0,0,0],[0,0,0,0,0,0,0]] [[0,0,0,1,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]] -> True
[[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[1,1,1,1,1,1,1],[1,1,1,0,1,1,1],[1,1,1,1,1,1,1],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0]] [[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[1,1,1,1,1,1,1],[1,1,1,1,0,0,1],[1,1,1,1,1,1,1],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0]] -> True
[[0,0,1,1,1,0,0],[0,0,1,1,1,0,0],[1,1,1,1,1,1,1],[1,1,1,0,1,1,1],[1,1,1,1,1,1,1],[0,0,1,1,1,0,0],[0,0,1,1,1,0,0]] [[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,1,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0],[0,0,0,0,0,0,0]] -> True
7
dalam contoh Anda? Mengapa hilang setelah2
pindah ke selatan?