Bob kaçırıldı ve bir labirentte kaldı. Senin işin bir çıkış yolu bulmasına yardım etmek. Ama çok karanlık ve korkutucu bir labirent olduğu için hiçbir şey göremiyor. Duvarları sadece içine girdiğinde hissedebilir ve çıkışı ne zaman bulduğunu bilir, ancak bundan daha fazlasını bilmez.
Programınızı bellekle çalıştırması gerektiğinden, olabildiğince kısa olmalıdır.
Not: Bu sorunu http://acmgnyr.org/year2016/problems.shtml adresinden aldım , ancak biraz uyarladım ve hakim programı / test davalarını kendim yazdım.
Şartname
- Bu etkileşimli bir sorundur, bu nedenle program stdout'a hamle çıkarır ve stdin'den yanıtlar alırsınız.
- Hamle Programınız olabilir çıkış biri
right
,left
,down
,up
. - Daha sonra aşağıdakilerden birini girdi olarak alacaktır:
wall
- bu Bob'un bir duvara çarptığı anlamına gelir. Bob aynı yerde kalacak.solved
- Bob çýkýţ buldu! Programınız artık başka bir şey yazdırmadan da çıkmalıdır.ok
- Bob verilen yönde hareket edebildi.
- Labirentten çıkış yoksa programınız
no exit
Bob'tan vazgeçmesi gerektiğini bildirmek için çıktı almalıdır. Programınız başka bir şey yazdırmadan çıkmalıdır. - Bob çıkmak için acele ettiğinden, programınız herhangi bir yabancı hareket yapmamalıdır. Başka bir deyişle, programınızın aynı kareden iki kez aynı yönde hareket etmesine izin verilmez .
- Bu kod golf , bu yüzden en kısa program kazanır!
Örnekler
Aşağıdaki örneklerde, S
başlangıç karesi, X
çıkış, #
bir duvar ve boşluklar geçerli karelerdir. Tek bir doğru cevap olmadığından, bunlar sadece bir çözümün örnek örnekleridir. Ayrıca labirentin çizimlerinin sadece görmeniz için orada olduğunu ve programınızın bunları girdi olarak almayacağını unutmayın.
########
#S #
###### #
# #
#X#
right
ok
right
ok
right
ok
right
ok
right
ok
right
wall
down
ok
right
wall
down
ok
right
wall
down
solved
#####
# S #
#####
right
ok
right
wall
down
wall
up
wall
left
ok
down
wall
up
wall
left
ok
down
wall
up
wall
left
wall
right
ok
no exit
solved
###############################
#S #
############## ### #
# #X# #
# #
##################
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
ok
right
wall
down
ok
right
wall
down
ok
right
wall
down
ok
right
wall
down
wall
left
ok
down
wall
up
ok
up
ok
left
ok
down
ok
down
ok
down
wall
left
ok
down
wall
up
ok
up
ok
left
ok
down
ok
down
ok
down
wall
left
ok
down
wall
up
ok
up
ok
left
wall
down
ok
left
wall
down
ok
left
ok
down
wall
up
wall
left
ok
down
wall
up
solved
Kontrol Programı
- Python'da bir çözüm denetleyicisi yazdım. Https://gist.github.com/Maltysen/f0186019b3aa3812d812f8bb984fee19 adresinde bulabilirsiniz .
- Gibi çalıştırın
python mazechecker.py ./mazesolver
. - Programınız adlı bir klasördeki tüm labirentlerde test edecektir
mazes
. - Labirentler yukarıdan aynı formatta ayrı dosyalardadır.
- Yukarıda listelenen tüm koşulları kontrol eder ve çözümünüzün herhangi birini ihlal edip etmediğini size bildirir.
- İle ek tanılama bilgileri yazdırmasını sağlayabilirsiniz
python mazechecker.py -d ./mazesolver
. - Burada sıkıştırılmış bir
mazes
klasör bulabilirsiniz . İsterseniz buna kendiniz de ekleyebilirsiniz.
solved
Çıktı alırken bir süre alabilir miyiz no exit
? Eğer öyleyse lütfen sadece test durumlarında değil, kurallarda da belirtin!
x,y
ve up
cevapla wall
, sonra right
tekrar cevapla wall
, sonra up
tekrar deneyebilir miyim , veya sadece left
ve down
henüz bu meydandan taşınmaz beri hala kullanılabilir?