Giriş
Engelli bir parkurda kaçak bir arabanın içinde sıkışıp kalmış olmanın talihsizliğine sahipsiniz. Aracın tüm özellikleri hassas değil, hasarlı direksiyon sistemi için tasarruf sağlıyor. Düz sürebilir veya sağa dönebilir. Araç güvenliğe yönlendirilebilir mi?
mekanik
Arabanız 8x8'lik bir haritanın sol üst köşesinde başlar ve sağ alt köşede güvenlik sağlamaya çalışıyor. Otomobilin 90 derecelik artışlarla ölçülen bir yönü (başlangıçta sağa) vardır. Araba iki işlemden birini gerçekleştirebilir:
- Bir kare ileri sür veya
- Saat yönünde 90 derece çevirin, sonra bir kare ileri doğru sürün
Otomobilin tek bir kare üzerinde 180 derecelik bir dönüş yapmak için yeterince keskin bir şekilde dönemediğini unutmayın.
Karelerin bazıları engeldir. Araba bir engel karesine girerse, çarpıyor. 8x8 parkurun dışındaki her şeyin engel olduğu varsayılır, bu nedenle parkurun dışına çıkmak çarpmaya eşdeğerdir.
Sağ alt kare, aracın engel parkurundan kaçmasına izin veren güvenli karedir. Başlangıç meydanı ve güvenli meydanın engel olmadığı varsayılır.
Görev
Girişini engelleme kursunu temsil eden 8x8 dizisi (matris, liste listesi vb.) Alan bir program veya işlev yazmalısınız. Program bir Boole veya benzer bir şekilde hakikaten bir şey döndürür veya yazdırır. Otomobilin çarpmadan güvenli bir kareye ulaşması mümkün ise (yani, harita çözülebilirse), çıkış budur True
, aksi halde False
.
puanlama
Standart kod golf kuralları - kazanan en az baytlık koddur.
Bonuslar:
Çözülebilir bir harita için kodunuz, aracı güvenli bir kareye yönlendiren geçerli bir sürücü girişi dizisi çıkarırsa, puanınızdan 10 yüzde puan düşün. Örnek bir çıktı formatı olabilir
SRSSR
(Düz, Sağ, Düz, Düz, Sağ). Bu çıkış standartTrue
çıktının yerine geçecektir .Çözülemeyen bir harita için, kodunuzun çıktısı, bir çarpışmanın kaçınılmaz olduğu durumlar ile sonsuza dek engel parkurunda sonsuza kadar sürmenin mümkün olduğu durumlar arasında ayrım yaparsa, puanınızdan 10 yüzde puan düşün. Bir örnek çıktı
Crash
, bir çarpışma kaçınılmaz ise veyaStuck
araç sonsuza dek engel parkurunda sıkıştıysa olabilir. Bu çıkışlarFalse
çözülemeyen bir harita için standart çıktının yerini alacak .
Örnek
Programa bunun gibi bir 8x8 dizi verilirse:
[[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]]
Böyle bir harita olarak yorumlanır, siyah kareler engelleri gösterir:
Ve olası bir çözüm olabilir:
Bir çözüm bulunduğundan, program True
bu harita için geri dönmeli / yazdırmalıdır . Burada gösterilen hareketlerin sırası SSSSRSRRRSRSSRRRSSRSSS
.
Crash
veStuck
. Ne kadar zaman oldukları için buradalar . Satır 2 dolu, her şey boş ->Crash
. Satır 7 dolu, her şey boş ->Stuck