前書き
アザラシの家族は、北極圏の氷山に取り残されています。氷山には無線送信機があり、アザラシが助けを求めるために使用できます。ただし、無線送信機の操作方法を知っているのはパパシールだけです。さらに悪いことに、この時期の氷は非常に滑りやすいので、アザラシが別のアザラシにぶつかったり、氷山の端から滑り落ちたりするまで、アザラシが制御不能に滑り、パパアザラシが無線送信機に到達するのが非常に難しくなります。幸いなことに、アザラシの1人はコンピューター科学者であるため、彼女はパパアザラシを無線送信機に操作する方法を理解するためのプログラムを書くことにしました。氷の上にはプログラムを書くスペースがあまりないので、彼女はプログラムで使用するバイトをできるだけ少なくすることにしました。
入力説明
シールのプログラムは、STDIN、コマンドライン引数、またはユーザー入力関数(などraw_input())から入力を受け取ります。変数で事前に初期化することはできません(たとえば、「このプログラムは変数への入力を想定していますx」)。
入力の最初の行は、次の形式の2つのコンマ区切り整数で構成されます。
A,B
その後に、各文字でB構成される行が続きAます。各行には、次の文字のみを含めることができます。
.:寒い、寒い、海。マップには常にこれが境界線として表示されます。#:氷山の一部。a...z:氷山のパパシールではないシール。D:パパは氷山にいます。*:無線送信機。
(パパシールは常に大文字で表記されていることに注意してくださいD。小文字dは通常のシールです。)
出力の説明
アザラシの移動方法に関する次の規則に従って、パパのアザラシを無線送信機に移動させるためにアザラシが移動する方法に関する指示のリストを出力します。
- ルール:すべてのシールは
U、上()、下(D)、左(L)、および右(R)に移動できます。彼らは斜めにスライドすることはできません。 - ルール:移動すると、アザラシは別のアザラシと衝突するか海に落ちるまで同じ方向に移動し続けます。
- アザラシが別のアザラシと衝突すると、動きを停止します。衝突したシールは移動しません。
- アザラシが海に落ちた場合、それはdrれて地図から消えます。つまり、他のアザラシのコライダーとしては機能せず、再度移動することはできません。
- ルール: 2つのシールを同時に動かすことはできません。また、別のシールがまだ動いている間に動かすこともできません。次のシールは、前のシールの移動が停止した後にのみ移動できます。
- ルール:シールを複数回移動したり、sealれるシールの数に制限はありません。
- ルール:正しい解決策は、パパが無線送信機の端を封印することです。パパシールは、滑っている間に送信機を単に通過することはできません。
出力は、それぞれが次の形式の複数の行で構成されます。
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#.
.........
出力(多くの出力のうち1つの出力):
m,R
b,L
D,U
D,R
D,D
D,L
入力:
26,5
..........................
.###..................###.
.l*##########v#########D#.
.###..................###.
..........................
出力(多くの出力のうち1つの出力):
v,D
D,L
他にご質問がある場合は、コメントでお尋ねください。