道なりの亀 〜 横へな 2013.7.6 参考問題

問題

下図のような地図の上を、入力文字列の指示に従って亀が歩く。

※ 大文字小文字数字の区別がしやすいよう、大文字・小文字・数字をそれぞれ別のフォントにしてある。
最初にいるマスは、左上隅の A で、最初は右 (つまり B の方) を向いている。
入力文字列の指示によって以下のように向きと位置を変える。

マス目の外に行ってしまった場合、その時点で終了とする。
例えば。 というわけで、最初のマスから最終的に到達したマスまで順に並べた文字列を出力せよ。

入力と出力

入力文字列は 2RcL3LL22 のように、コマンドが区切り文字なしで並んでいる。
コマンドは下表の通り:

コマンド 意味
L 反時計回りに90度ほど向きを変える
R 時計回りに90度ほど向きを変える
1〜9 1〜9 マス 道なりに 進む
a〜f 10〜15 マス 道なりに 進む
例えば、 2RcL3LL22 という意味なので、 ABCNYjmpsvy147edcbcdef と移動する。
マス目の外に行ってしまった場合はその時点で終了となる。マス目の外に行ってしまったことを明示するため、出力する文字列の末尾に ? をつける。
例えば、 L3R4L5RR5R3L5 が入力の場合、即座にマス目の外に行ってしまうので出力は A? となり、最初の二文字以外は全て無視されてしまう。

補足

サンプルデータ

# 入力 期待
0 2RcL3LL22 ABCNYjmpsvy147edcbcdef
1 L3R4L5RR5R3L5 A?
2 2ReLLe ABCNYjmpsvy147eTITe741yvspmjYNC
3 1ReRRe ABMXilorux036fUJUf630xuroliXMB
4 ReRRe ALWhknqtwz25gVKVg52zwtqnkhWLA
5 f ABCDEFGHIJK?
6 Rf ALWhknqtwz25gVK?
7 1Rf ABMXilorux036fUJ?
8 2Rf ABCNYjmpsvy147eTI?
9 aR1RaL1LaR1R2L1L2 ABCDEFGHIJKVUTSRQPONMLWXYZabcdefg567432
10 2R1R2L1L2R1R2L1L2R1R2L1L2R1R2L1L2 ABCNMLWXYjihklmponqrsvutwxy
11 2R4R2L4L2R4R2L4L2R4R2L4L2 ABCNYjmlknqtwxy147efgVK?
12 R1L2R4R2L4L2R4R2L4L2R4R2L4L2 ALMNYjmponqtwz0147eTUVK?
13 R2L2R4R2L4L2R4R2L4L2R4R2L4L2 ALWXYjmpsrqtwz2347eTIJK?
14 R3L2R4R2L4L2R4R2L4L2R4R2L4L2 ALWhijmpsvutwz2567eTI?
15 R5L2L5L1LaR1L4L5 ALWhknopmjYNCBMXilorux0325gVKJIHGF
16 1R2L4L2R4R2L4L2R4 ABMXYZabQFGHIJUfg?
17 2R2L4L2R4R2L4L2R4 ABCNYZabcRGHIJKVg?
18 3R2L4L2R4R2L4L2R4 ABCDOZabcdSHIJK?
19 4R2L4L2R4R2L4L2R4 ABCDEPabcdeTIJK?
20 5R2L4L2R4R2L4L2R4 ABCDEFQbcdefUJK?
21 LLL1RRR1LLL1RRR2R1 ALMXYZ?
22 R3RRR3 ALWhij?
23 1LLL4RRR1LR1RL1 ABMXilm?
24 R2L1R2L1R3R4 ALWXilmpsvut?
25 7R4f47LLLc6R9L ABCDEFGHSd?
26 5RR868L8448LL4R6 ABCDEFEDCBA?
27 42Rd1RLLa7L5 ABCDEFGRc?
28 RRLL6RLR1L5d12LaLRRL529L ABCDEFGRSTUV?
29 RLR7L6LL1LRRRcRL52R ALWhknqtuv?
30 1RLR8RLR1R437L99636R ABMXiloruxwtqnkhWLA?
31 LLL2L3La9Le5LRR ALWXYZOD?
32 R1LcRR491 ALMNOPQRSTUV?
33 R8L1R1R512L8RLLReRf ALWhknqtwx0z?
34 1RcL8f1L29a5 ABMXilorux036fedcbaZYXW?
35 R822LeL46LL39LL ALWhknqtwz25gfedcbaZYXW?
36 9R3L5LRRLb5R3L7cLLLR4L ABCDEFGHIJUf65?
37 7LLRRR2R3R69Lf76eR2L ABCDEFGHSdcbaPE?
38 8RRRLL3Le ABCDEFGHITe765?
39 8R5RLL6LbL4LL5bL ABCDEFGHITe7410z?
40 6LR2R1LR5LRLRL484L63 ABCDEFGHITe741yxw?

C/C++/Java 用のテストデータ