Bir araştırma görevlisi olarak işe alındınız ve sıçan labirentine inşa edecek küçük bir program oluşturmanız istendi. Sıçan kutusu her zaman 62x22'dir ve sıçan için şu şekilde bir giriş (a) ve çıkışa (A) sahiptir (giriş 1):
#######a######################################################
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
#################################################A############
Programınız, sıçan için aşağıdaki gibi bir yol bırakarak (çıkış 1) bloklarla (#) kutuyu doldurmalıdır:
#######a######################################################
####### ######################################################
####### ######################################################
####### ######################################################
####### ######################################################
####### ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
################################################# ############
#################################################A############
Düşündüğün bu kolay! Güvenle dolu küçük bir program yazmaya başlıyorsunuz. Ancak, İlke Bilimcisi'nin yeni bir fikri vardı - iki farenin aynı anda labirentte gezinmesini istiyor. Dr. Rattanshnorter, farklı kapıları ve farklı çıkışları olduğunu açıklar (giriş 2):
#b#####a######################################################
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# #
# B
# #
#################################################A############
Sıçanlar, doğrudan çapraz kavşaklarda hareket etmek üzere eğitilmiştir, ancak T kavşakları onları umutsuzca karıştırır ve deneyi geçersiz kılar. İyi Doktor son bir şartı açıkladığında yeni daha karmaşık görevinize başlarsınız: sıçanlar birbirlerine karşı vahşi olurlar, bu yüzden birbirlerini herhangi bir noktada görürlerse, bir sıçan dövüşü bozulur ve her ikisi de etik kurulundan önce olacaksınız. Artık programınızın aşağıdaki gibi bir labirent çıktısı gerektiğini fark ediyorsunuz (çıktı 2):
#b#####a######################################################
# ##### ######################################################
# ##### ######################################################
# ##### ####################################### ####
# ##### ####################################### ######### ####
# ##### ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# ############################################# # ####### ####
# # ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### ####
################################################# ####### B
################################################# ############
#################################################A############
Sıçan B kavşağa ulaştığında, sıçan A, A'dan çıkmak için koridordan aşağı doğru hareket edecek ve sıçan kavgasından kaçınılacaktır.
Kurallar:
Programınız yukarıdaki gibi bir girişi okumalı (STDIN veya dosya) ve birçok boşluk dışında aynı verileri şimdi karma (#) olarak vermelidir (STDOUT veya dosya). Giriş dizesi
;
yerine herhangi bir tek karakteri (örneğin ) kullanabilirsiniz\n
, ancak çıkış dizesi yine de\n
karakter gerektirir . GÜNCELLENMİŞSıçan yolu, çapraz kavşaklar hariç bir karakter genişliğinde olmalıdır (her boşluk sıfır veya iki dikey bitişik
#
karaktere sahip olmalıdır ). Her bir sıçan, çapraz kavşaklar hariç, net bir tek yola sahip olmalıdır. T kavşaklarına izin verilmez.Sıçanlar aynı anda salınır ve sabit bir oranda hareket eder. Hiçbir zaman iki veya daha fazla sıçan birbirini görmemelidir (arada birden fazla
#
karakter olmadan aynı sütunda veya sırada olmalıdır ).Çözüm yoksa (bitişik giriş noktaları gibi), yazdırın
Impossible\n
ve çıkın.Girişler ve çıkışlar herhangi bir tarafta olabilir, ancak asla köşelerde olmazlar.
(Örneğin, bir eşleştirilmiş giriş ve çıkış bitişik olan
##aA##
), sıçan şirketinden gidemeza
içinA
. Labirent alanında küçük bir 2 boşluk koridor bölümü olmalıdır.Sıçanın çıkış noktasına ulaştığı dönüşte (veya bundan sonraki herhangi bir zamanda), diğer fareler tarafından artık görülemez.
Programınız 1, 2, 26 fareye kadar labirentine hesaplamak için tasarlanabilir.
Standart boşluklara izin verilmez.
Puan:
Çözümünüzle, programınızın labirent başına kaç fareyi (N) çözebileceğini belirleyin. Puanınız bayt cinsinden kod uzunluğunuzun bu N sayısına bölünmesiyle elde edilir.
Programınızın ne ürettiğini görebilmemiz için lütfen yanıtınıza örnek bir çıktı ekleyin.