pengantar
Anda mengalami kemalangan terjebak di mobil yang sedang melaju di jalur rintangan. Semua fitur mobil tidak responsif, kecuali untuk sistem kemudi, yang rusak. Itu bisa melaju lurus, atau bisa belok kanan. Bisakah mobil dipandu ke tempat yang aman?
Mekanika
Mobil Anda mulai di sudut kiri atas peta 8x8, dan mencoba untuk mendapatkan keselamatan di sudut kanan bawah. Mobil itu memiliki orientasi (awalnya ke kanan), diukur dalam peningkatan 90 derajat. Mobil dapat melakukan salah satu dari dua tindakan:
- Drive satu persegi ke depan, atau
- Putar 90 derajat searah jarum jam, lalu dorong satu kotak ke depan
Perhatikan bahwa mobil tidak dapat berbelok cukup tajam untuk melakukan putaran 180 derajat pada satu kotak.
Beberapa kotak adalah hambatan. Jika mobil memasuki rintangan, itu menabrak. Segala sesuatu di luar jalur 8x8 diasumsikan sebagai hambatan, jadi mengendarai jalur itu sama dengan menabrak.
Kotak kanan bawah adalah kotak yang aman, yang memungkinkan mobil untuk keluar dari rintangan. Alun-alun awal dan kotak aman diasumsikan tidak menjadi hambatan.
Tugas
Anda harus menulis sebuah program atau fungsi yang memasukkan input array 8x8 (matriks, daftar daftar, dll.), Yang mewakili jalur rintangan. Program mengembalikan atau mencetak Boolean, atau sesuatu yang serupa kebenarannya. Jika mungkin bagi mobil untuk sampai ke kotak aman tanpa menabrak (yaitu, jika peta dipecahkan), hasilnya adalah True
, sebaliknya, itu False
.
Mencetak gol
Aturan golf kode standar - pemenangnya adalah kode dengan byte paling sedikit.
Bonus:
Jika, untuk peta yang dapat dipecahkan, kode Anda menghasilkan serangkaian input driver yang valid yang memandu mobil ke kotak yang aman, kurangi 10 poin persentase dari skor Anda. Contoh format output mungkin
SRSSR
(menunjukkan Lurus, Kanan, Lurus, Lurus, Kanan). Output ini akan menggantikanTrue
output standar .Jika, untuk peta yang tidak dapat dipecahkan, output kode Anda membedakan antara situasi di mana crash tidak dapat dihindari, dan situasi di mana dimungkinkan untuk berkendara di sekitar rintangan selamanya, kurangi 10 poin persentase dari skor Anda. Contoh output mungkin
Crash
jika kecelakaan tidak dapat dihindari, atauStuck
jika mobil macet di rintangan selamanya. Output ini akan menggantikanFalse
output standar untuk peta yang tidak dapat diselesaikan.
Contoh
Jika program diberikan array 8x8 seperti ini:
[[0, 0, 0, 0, 0, 1, 0, 0],
[0, 0, 0, 0, 0, 0, 1, 0],
[1, 1, 0, 0, 0, 0, 0, 0],
[0, 1, 0, 1, 0, 0, 0, 0],
[0, 0, 1, 1, 0, 0, 0, 0],
[0, 0, 0, 0, 1, 0, 1, 0],
[0, 0, 0, 0, 0, 0, 1, 0],
[0, 1, 1, 0, 0, 0, 1, 0]]
Ini akan ditafsirkan sebagai peta seperti ini, dengan kotak hitam menunjukkan hambatan:
Dan solusi yang mungkin adalah:
Karena ada solusi, program harus mengembalikan / mencetak True
untuk peta ini. Urutan gerakan yang ditunjukkan di sini adalah SSSSRSRRRSRSSRRRSSRSSS
.
Crash
danStuck
. Mereka ada di sini karena berapa lama mereka. Baris 2 terisi, semuanya kosong ->Crash
. Baris 7 terisi, semuanya kosong ->Stuck