Bir arkadaşınız size şehirdeki en iyi restorana yol tarifi verdi. Bir dizi sola ve sağa dönüş. Ne yazık ki, bu dönüşler arasında ne kadar ileri gitmeniz gerektiğinden bahsetmeyi unuttular. Neyse ki üzerinde tüm restoranlar ile bir sokak haritası var. Belki de hangi restoranı kastettiklerini anlayabilirsin?
Giriş
Harita, ASCII karakterlerinden oluşan dikdörtgen bir ızgara olarak verilmiştir. .
Bir yol, bir #
, bir yapıdır A
için Z
çeşitli restoranlar bulunmaktadır. Sol üst köşeden başlayıp doğuya gidiyorsunuz. Örnek:
.....A
.#.###
B....C
##.#.#
D....E
##F###
Arkadaşınızın talimatları (potansiyel olarak boş) bir dize veya L
s ve R
s içeren karakterlerin listesi olarak verilecektir .
Çıktı
Her birinden önce ve sonunda en az bir adım atmanız şartıyla, giriş dizisindeki sola ve sağa dönüşlere karşılık gelen herhangi bir yolu yürüyebilirsiniz. Özellikle bu, dizenin R
sizinle başlaması halinde , en soldaki sütunda hemen güneye gidemezsiniz anlamına gelir . Ayrıca yerinde 180 ° dönemeyeceğiniz anlamına gelir.
Sonunda ulaştığınız bina dışında restoranlar veya restoranlar arasında yürüyemezsiniz. Sol üst köşenin a olduğunu kabul edebilirsiniz .
.
Arkadaşınızın talimatıyla ulaşılabilecek tüm restoranları bir dize veya liste halinde çıkarmalısınız.
Talimatların en az bir restorana yol açacağını varsayabilirsiniz. Örneğin L
, yukarıdaki harita için bir single geçersiz sayılır.
Yukarıdaki harita için bazı örnekler:
<empty> A
R F
RR B,D
RL C,E
RLRL E
RLLR C
RLLL B
RLRR D
RLRRRR A,C
RLLLRLL B
Özellikle R
ulaşmadığını unutmayın B
.
STDIN (veya en yakın alternatif), komut satırı argümanı veya işlev argümanı yoluyla giriş alarak ve sonucu STDOUT (veya en yakın alternatif), fonksiyon dönüş değeri veya function (out) parametresi ile çıktı alarak bir program veya işlev yazabilirsiniz.
Standart kod-golf kuralları geçerlidir.
Ek Test Durumları
İşte Conor O'Brien'ın izniyle (biraz değiştirdiğim) daha büyük bir harita :
.......Y..........................######
.####.....#.##....##..######....#.###.##
B.........#.##.#..##....##...##.#.#P...#
.#.#####..#.##..#.##....##.#....#.####.#
.#.#...C..#.##...G##..#.##.#....#.#....#
.#.#.#.#..#.####.###.#..##.#....#.#.NO.#
.#.#A#.#..#.##...F###...##.#.##.#......#
.#.###....#.##....##....##.#....###....#
.#.....##...##....##...D##........###R.#
.#.##..##...##E...##..######....####...#
.....X....#.#.....................##S.T#
###########.###########M############...#
#................................###.#.#
#.#########.########.######.#.######.#.#
#......V#.....######.IJ...........##.#.#
#########.###......ZH############L##.#.#
#########.##########.###############.#.#
####K##...##########.#....#..........#.#
####....########U......##...#######Q.#.#
#####################################W.#
Ve işte birkaç seçilmiş yol tarifi listesi ve beklenen sonuçları:
<empty> Y
RR B
RLL Y
RLRR B,C,X
RLLLRRR G
RLRLRLRL I,Z
RLLRRRLRRLRR C,D,F,G,Y
RLRRLLRLLLRL B,C,Y
RLLRRLRRRLLLL F,M,N,O,Y
RLRRLLLRRRRLLLL F,M,Y
RLRRLRRRRRRRRRR E,F,Y
RLRRRLLLRLLRRLL M,N,O
RLLRRLRRLRLRLRRLLR E,U
RLRLLRLRRLRRRRRLRL F,G,I,Z
RLLRRLLRLLRRRLRRLLRR W
RLLLRRRLRRLLLLLRLLLLLL D,G,X
RLRLLRLRRLRLRRRLRLLLRR B,C,E,J,X
RLRLRLLLLRLRRRRRRLRLRRLR Y
RLRLRRRLRLLLLRLRRLLLLRLLRRL E,M,X
RLRLLLRRRLLLRLLRLLRLRRLRLRR B,E,F,K
RLRRRLLLLLLLLLLLLLLLRRRRLLL A,B
Bonus soru: bir giriş vardır sonuçları bu sadece I
yoksa sadece U
? Öyleyse, bu yoldaki en kısa yol nedir?