Tujuan dari tantangan ini adalah untuk menentukan apakah suatu langkah adalah langkah Bahasa Inggris yang legal .
Tantangan ini akan menggunakan papan 8x8. Sepotong tergerak harus diperlakukan sebagai seorang pria (bukan raja) yang hanya bisa bergerak maju secara diagonal. Papan akan memiliki 0 atau lebih potongan hitam dan 1 atau lebih potongan putih. Satu potong putih saat ini akan bergerak. Potongan putih dapat "melompati" satu potongan hitam secara diagonal di depannya jika kotak tepat di belakangnya kosong. Dimungkinkan untuk mengambil lompatan lebih jauh dari posisi itu jika ada potongan hitam lain di kedua arah secara diagonal di depannya. Menangkap adalah wajib, jadi ilegal untuk tidak melakukan lompatan yang tersedia. Namun, tidak wajib untuk mengambil jalur yang memaksimalkan jumlah lompatan. Pada dasarnya, ini berarti bahwa jika Anda melakukan lompatan dan ada kemungkinan lompatan lain dari posisi akhir maka gerakan itu ilegal. Posisi potong menggunakan skema penomoran berikut:
Aturan
Input:
Daftar angka yang mewakili potongan hitam.
Daftar angka yang mewakili potongan putih.
Posisi awal untuk bagian putih
Posisi akhir untuk bagian putih
Keluaran:
- Nilai kebenaran jika gerakan itu valid, jika tidak nilai falsey
Anda dapat menganggap sepotong putih akan selalu menempati posisi awal.
Jika mudah, Anda dapat mengasumsikan bahwa keping putih pertama dalam daftar keping putih akan berisi posisi awal alih-alih menerima input 3.
Aturan golf kode standar. Bytes paling sedikit menang.
Uji Kasus
Untuk menggambarkan, O adalah posisi awal, X adalah posisi akhir, B adalah potongan hitam, dan W adalah potongan putih
Black pieces: []
White pieces: [5]
Move: (5, 1)
Output: True
Single move no jump
X _ _ _
O _ _ _
B: [6]
W: [9]
M: (9, 2)
O: True
Single jump
_ X _ _
_ B _ _
O _ _ _
B: [2, 6]
M: (9, 2)
O: False
Illegal ending position on top of black piece
_ X _ _
_ B _ _
O _ _ _
B: [7, 14]
W: [17]
M: (17, 3)
O: True
Double jump
_ _ X _
_ _ B _
_ _ _ _
_ B _ _
O _ _ _
B: [7, 14]
M: (17, 10)
O: False
Illegal jump, must take the next jump as well
_ _ _ _
_ _ B _
_ X _ _
_ B _ _
O _ _ _
B: [4]
W: [8]
M: (8, 3)
O: False
Illegal jump across the board
_ _ _ X
B _ _ _
O _ _ _
B: [6, 7]
W: [6]
M: (10, 1)
O: True
Split decision p1
X _ _ _
_ B B _
_ O _ _
B: [6, 7]
M: (10, 3)
O: True
Split decision p2
_ _ X _
_ B B _
_ O _ _
B: [2]
W: [1]
M: (1, 3)
O: False
Sideways Jump
O B X _
B: [6]
W: [1]
M: (1, 10)
O: False
Backwards Jump
O _ _ _
_ B _ _
_ X _ _
B: [6]
W: [9, 2]
M: (9, 2)
O: False
Illegal ending position on top of white piece
_ X _ _
_ B _ _
O _ _ _
B: []
W: [9, 6]
M: (9, 2)
O: False
Illegal jump over white piece
_ X _ _
_ W _ _
O _ _ _
B: [8, 15, 23, 24]
W: [27]
M: (27, 4)
O: True
Split decision long path
_ _ _ X
_ _ _ B
_ _ _ _
_ _ B _
_ _ _ _
_ _ B B
_ _ W _
B: [8, 15, 23, 24]
W: [27]
M: (27, 20)
O: True
Split decision short path
_ _ _ _
_ _ _ B
_ _ _ _
_ _ B _
_ _ _ X
_ _ B B
_ _ W _
sumber
B=[8,15,23,24];W=[27]
dengan masing-masingM=[27,4]
danM=[27,20]
1. itu akan memberikan perubahan arah. 2 itu akan menjawab pertanyaan yang saya miliki: keduanya valid atau haruskah lebih lama diambil? ("Menangkap adalah wajib, jadi ilegal untuk tidak melakukan lompatan yang tersedia" semacam menyarankan keduanya valid, meskipun saya tidak tahu mengapa Anda membuatnya ilegal untuk tidak menangkap jika mungkin, jadi mungkin Anda bermaksud mengambil sebanyak mungkin potongan?)Jawaban:
Itu menantang :) * memperbaiki bug (ditambahkan byte)
JavaScript (Node.js) ,
197193191185181186 byteCobalah online!
sumber
>>2&1
bukan/4%2|0
.[10, 3], [14], 14, 7
gagal.