Sen bir faresin. Fare arkadaşların hepsi yakalandı ve bilinçsiz ve tek bir giriş / çıkışa sahip bir labirentte kaldılar. Labirentin mükemmel bir haritasına sahip olursunuz, böylece acele edip hepsini güvenli bir yere taşıyabileceğiniz bir çözüm çizebilirsiniz. Bununla birlikte, labirent, eşik değerine 1000
ulaşıldığında bir alarmı tetikleyecek ve yakalanmanıza ve kurtarma görevinizde başarısız olmanıza neden olacak bir güvenlik sistemi ile korunmaktadır .
Labirent hakkındaki önceki araştırmalarınızdan, adım attığınız her kare (yani, her yatay veya dikey hareket - fareler çapraz olarak hareket edemez ) 1
güvenlik sisteminin sayacına ekler . Bununla birlikte, bir ağırlık taşıyorsanız (bir dinamit bloğu veya bilinçsiz bir fare arkadaşı), bunun yerine 2
ek basıncı tespit ettiğinden ekler . Giriş / çıkış meydanında bu güvenlik sistemi yoktur ve bu yüzden tezgahın içine ekleme yapmaz.
Girişte getirdiğiniz sınırsız bir dinamit kaynağınız var, böylece arkadaşlarınızı özgür bırakmak için tüm duvarları havaya uçurabilirsiniz . Ancak, her patlamada 50
sarsıcı baskıdan dolayı tezgahı eklediği için bunu yaparken dikkatli olmalısınız . Ek olarak, bir seferde yalnızca bir şey taşıyabilir, bir fare veya bir dinamit bloğu. Her dinamit bloğu yalnızca bir duvar alanını patlatabildiğinden, arka arkaya birden fazla duvar varsa, daha fazla kapmak için girişe boş elle yapılan bir yolculuk yapmanız gerekeceği anlamına gelir.
Çalışılan örnek
Labirentimizin aşağıdaki gibi göründüğünü varsayalım:
######
#M# E#
######
c
Sayaç için kullanacağım . Biz başlayacak E
, ntrance dinamit taşırken bir kare sola hareket c=2
. Duvarı patlatmak için dinamiti patlatıyoruz c=52
. İki kareyi sola hareket ettirdik, eli boş, almak için c=54
, ve şimdi farenin karesinde duruyoruz. Arkadaşımızı kaldırıyoruz ve 3 kareyi tekrar E
xit'e taşıyoruz, ancak son kare sayma sensörleri olmadığı için sayılmaz, bu yüzden sırtımızda bir şey olan sadece 2 kare var. Bu, son fare ile çıkışa ulaştığımızda c=58
, bundan daha az olan 1000
ve dolayısıyla görevin başarılı olduğu anlamına gelir.
Meydan okuma
Bir giriş labirentine bakıldığında, fare kahramanı olarak, yukarıda belirtilen kısıtlamalar dahilindeki kapana kısılmış tüm fareleri başarıyla kurtarabilir veya görevin başarısız olup olmadığını çıkarabilirsiniz.
Giriş
- Kabul edilebilir herhangi bir formatta 2D labirent (çok satırlı dize, dizi dizisi, vb.).
- Bu meydan okuma
#
için hem iç hem dış duvarlarda,M
fare arkadaşlarında veE
girişlerde kullanacağım . - Giriş hiçbir zaman bir iç duvara bitişik olmayacak (her zaman serbestçe hareket edebilecek en az bir alan olacak).
- Tutarlı olduğu sürece, yazdırılabilir ASCII karakterlerinin yerine kullanabilirsiniz . Bu mu çok uzun örn tutarlılık (, kullanmak seçerseniz korumak gibi, sen dış duvarlar vs iç duvarlar için iki farklı semboller kullanmasına izin
@
yerine iç duvarlar için ve izin#
dış için, her iç duvar olmalı@
ve her dış duvar#
). - Labirent her zaman duvarlarla tamamen sınırlanır, ancak mutlaka dikdörtgen değildir. İstenirse, labirentin dikdörtgen giriş yapmak için boşluklarla doldurulduğunu varsayalım (isteğe bağlı).
- Labirent, dinamit olmadan erişilemeyen bölümlere sahip olabilir.
- Labirentin dış duvarlarını dinamit edemezsiniz.
Çıktı
Bir truthy / falsey değeri. "Evet, fare diğer fareleri kurtarabilir" ya da "Hayır, alarm sistemi açılacak" için Truthy.
Kurallar
- Tam bir program veya bir işlev kabul edilebilir.
- Standart boşluklar yasaktır.
- Bu kod-golf olduğundan, tüm normal golf kuralları geçerlidir ve en kısa kod (bayt cinsinden) kazanır.
Örnekler
Boş çizgilerle ayrılmış gerçek örnekleri.
#####
#M E#
#####
######
#M# E#
######
########
#E # M#
# # #
# # #
# #
########
#############################
# ## # # #
# M ## M # # #
# ## # M # E #
#M ## # # #
#############################
###############
#MMMMMMMMMMMMM#
#MMMMMMMMMMMMM#
#MMMMMMMMMMMMM#
#MMMMMMMMMM MM#
#MMMMMMMMMMMME#
###############
Boş satırlarla ayrılmış Falsey örnekleri
#############################
#M ## ## ## #
# M ## M ## ## #
# ## ## M ## E #
#M ## ## ## #
#############################
#############################
########
########
# # #
# M # M#
########
#####
# M #
#####
#####
#####
#####
###################
# # # ## ## # # #
#M#M#M## E ##M#M#M#
# # # ## ## # # #
###################
#######
######
#####
####
# M#
####
###############
#MMMMMMMMMMMMM#
#MMMMMMMMMMMMM#
#MMMMMMMMMMMMM#
#MMMMMMMMMMMMM#
#MMMMMMMMMMMME#
###############