Tantangan:
Diberikan kotak-kotak, hasilkan jumlah gerakan terkecil yang diperlukan (dengan anggapan hitam tidak bergerak sama sekali) untuk menjadi raja sepotong merah, jika memungkinkan.
Aturan :
Sisi merah akan selalu berada di bagian bawah, namun bidak mereka dapat dimulai pada baris apa pun (bahkan barisan raja yang harus mereka lewati). Potongan hitam stasioner , artinya mereka tidak bergerak di antara gerakan merah, tetapi mereka dikeluarkan dari papan ketika ditangkap. Perhatikan bahwa potongan dapat dimulai pada ruang apa pun di papan tulis, termasuk tepat di sebelah satu sama lain. Ini bukan bagaimana catur normal dimainkan, tetapi program Anda harus dapat menyelesaikannya. (Lihat input 5) Namun, keping checker hanya boleh bergerak secara diagonal (lihat input 3). Pengambilan mundur dibolehkan jika penangkapan pertama maju dalam rantai (lihat input 7).
Memasukkan:
Kotak centang 8x8, dengan ruang papan ditentukan sebagai karakter berikut (jangan ragu untuk menggunakan alternatif selama konsisten):
. - Kosong
R - Potongan merah
B - Potongan hitam
Keluaran:
The terkecil jumlah bergerak itu akan mengambil sepotong merah menjadi 'kinged' dengan memasukkan baris raja pada baris atas papan (sisi hitam), 0 jika tidak ada langkah yang diperlukan (sepotong merah dimulai pada baris raja), atau angka negatif jika tidak mungkin untuk raja sepotong merah (yaitu hitam menempati seluruh baris pertama).
Input 1:
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .
Output 1:
7
Input 2:
. . . . . . . .
. . . . . . . .
. . . . . B . .
. . . . . . . .
. . . B . . . .
. . . . . . . .
. B . . . . . .
R . . . . . . .
Output 2:
2
Input 3:
. B . B . B . B
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .
Output 3:
-1
Input 4:
. . . . . . . R
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
R . . . . . . .
Output 4:
0
Input 5:
. . . . . . . .
. . . . . . . .
. . . . . . . .
. B . . B . . .
B . . . . B . .
. B . B . . . .
. . B . . B . .
. . . R R . . .
Output 5:
4
Input 6:
. . . . . . . .
. . . . . . . .
. B . . . . . .
. . B . . . . .
. B . B . . . .
. . . . R . . .
. . . B . . . .
. . . . R . . .
Output 6:
2
Input 7:
. . . . . . . .
. . . . . . . .
. . B . . . . .
. . . . . . . .
. . B . . . . .
. B . B . B . .
. . . . B . . .
. . . . . R . R
Output 7:
4
Mencetak:
Ini adalah kode-golf , jadi kode terpendek dalam byte menang.
Jawaban:
JavaScript (ES6),
354322 byteMengambil array sebagai input dengan:
Mengembalikan jumlah gerakan optimal, atau 99 jika tidak ada solusi.
Ini sangat cepat tetapi bisa bermain golf lebih banyak.
sumber