介绍
一系列海豹被困在北极圈的冰山上。冰山上有一个无线电发射器,海豹可以用来寻求帮助。但是,只有爸爸封印才知道如何操作无线电发射器。更糟糕的是,每年的这个时候,冰非常滑,因此海豹将无法控制地滑动,直到它们碰到另一个海豹或滑出冰山的边缘,这使爸爸海豹很难到达无线电发射器。幸运的是,其中一个印章是计算机科学家,因此她决定编写一个程序,以弄清楚如何将爸爸印章操纵到无线电发射器上。由于没有足够的空间来编写程序,因此她决定使程序使用尽可能少的字节。
输入说明
Seal的程序将从STDIN,命令行参数或用户输入函数(例如raw_input()
)中接受输入。不能在变量中对其进行预初始化(例如,“此程序需要在变量中输入x
”)。
输入的第一行由两个逗号分隔的整数组成,形式为
A,B
接下来是各B
由A
字符组成的行。每行只能包含以下字符:
.
:寒冷,寒冷,海洋。地图将始终以此为边界。#
:冰山的一部分。a
...z
:不是冰山上的爸爸密封的密封。D
:冰山上的爸爸海豹。*
:无线电发射器。
(请注意,爸爸印章始终以大写字母表示D
。小写字母d
只是常规印章。)
输出说明
根据有关封条如何移动的以下规则,输出有关封条如何移动以将爸爸封条带到无线电发射器的说明列表。
- 规则:所有密封件均可向上(
U
),向下(D
),向左(L
)和向右(R
)移动。它们不能对角滑动。 - 规则:海豹在移动时将继续沿相同方向移动,直到与另一海豹相撞或掉入海中。
- 如果一个密封件与另一个密封件碰撞,它将停止移动。与之碰撞的密封不会移动。
- 如果海豹掉入海中,它将淹没并从地图上消失。也就是说,它不能用作其他密封件的对撞机,并且不能再次移动。
- 规则:两个印章不能同时移动,而另一个印章仍在移动时也不能移动。下一个密封件只能在前一个密封件停止移动后才能移动。
- 规则:多次移动印章或淹没印章的数量没有限制。
- 规则:正确的解决方案将在无线电发射器的末端加封印。爸爸密封不能简单地在滑动时通过变送器。
输出将包含几行,每行形式为
A,B
其中A
是移动(密封D
的密封爸爸,a
... z
为其他),并且B
是移动的密封件(或者方向U
,D
,L
,或R
)。请注意,您不需要找到最短的路线。任何将爸爸封印带入目标的路线都是可接受的输出。
输入和输出示例
输入:
25,5
.........................
.#######################.
.####D#############*k###.
.#######################.
.........................
输出:
D,R
输入:
9,7
.........
.a#####b.
.#####d#.
.##l*###.
.###m#p#.
.#D#.#c#.
.........
输出(可能的一种输出):
m,R
b,L
D,U
D,R
D,D
D,L
输入:
26,5
..........................
.###..................###.
.l*##########v#########D#.
.###..................###.
..........................
输出(可能的一种输出):
v,D
D,L
如果您还有其他疑问,请在评论中提问。