Objektif
Gadai hitam ingin membalas dendam. Plotkan serangan terakhirnya.
Aturan
Gadai hitam ( L
) dimulai dari baris atas dan bergerak ke bawah ke baris bawah. Maksimalkan poin yang diambil, yang menunjukkan jalur dengan X
. Bidak ( P
) adalah 1, uskup ( B
) dan ksatria ( N
) 3, benteng ( R
) 5, dan ratu ( Q
) 9. Tidak akan ada raja di input.
Jika ada lebih dari satu jalur yang memiliki jumlah titik maksimum, hasilkan jalur tersebut. Tidak akan ada situasi di mana pion tidak dapat mencapai baris bawah.
Contohnya
Memasukkan:
----L---
-----P--
------P-
--R--P-Q
----P-P-
---P-P-P
--P-N---
-P------
Keluaran:
----L---
-----X--
------X-
--R--P-X
----P-X-
---P-X-P
--P-X---
-P--X---
Memasukkan:
--L-----
-P------
P-------
-P------
P--Q----
-P------
P-------
-P------
Keluaran:
--L-----
-PX-----
P-X-----
-PX-----
P--X----
-P-X----
P--X----
-P-X----
code-golf
graph-theory
path-finding
chess
Absinth
sumber
sumber
Jawaban:
Python, 332
sumber
Ruby
260 258 255 241 236222Program ini mendefinisikan fungsi (
s
), yang, diberikan beberapa baris papan, mengembalikan jalur terbaik sebagai string, dan nilai dalam titik-titik jalur itu.s
bersifat rekursif, jadi pada setiap langkah itu mengevaluasi semua kemungkinan dan mengembalikan yang terbaik.Berikut ini adalah versi online dengan tes: http://ideone.com/6eMtm4
Versi yang dapat dibaca tersedia di sini: http://ideone.com/eoXUtp
Semua langkah yang saya ambil untuk mengurangi ukuran kode dapat ditemukan di sini .
sumber