すごろくメニューのサムネイル
すごろくシミュレーション 5 Erlang(Beta)編(paizaランク A 相当)

問題にチャレンジして、ユーザー同士で解答を教え合ったり、コードを公開してみよう!

問題

下記の問題をプログラミングしてみよう!

移動イベントマスを導入したすごろくのシミュレーションを行います。

N マスのすごろくの盤面で T ターンのゲームを行います。
すごろくの盤面はマス 1 がスタートマス、マス N がゴールマス、それ以外のマスは所持金イベントマスか移動イベントマスです。
各ターンではすごろくの出た目の数だけ進み、到着したマスのイベントが発生します。
ゲーム開始時は 1 マス目のスタートマスにおり、所持金は 0 です。

各ターンで 1~6 の数字がでるサイコロを振って出た目の履歴が与えられます。
履歴に基づいて行動したときのマスの位置と所持金を出力してください。
ただし、ゴールマスを超えるような移動の場合もゴールマス (マス N) にたどり着いたとします。
ゴールマスにたどり着いたら、それ以降のターンでは移動せず Finished と出力してください。
また、移動イベントマスによる移動後のマスではイベントは発生しないものとします。
さらに、移動マスで移動する際にスタートマス (マス 1) より前に戻ることはないことが保証されます。

入力例 1 では以下のように行動します。
・1 回目のサイコロの目は 1 です。スタートであるマス 1 からマス 2 に移動します。所持金マスに止まったため、所持金が 4 増加します。
・2 回目のサイコロの目は 1 です。マス 2 からマス 3 に移動します。-1 が設定された移動マスに止まったため、マス 3 からマス 2 に移動します (移動イベントマスによる移動後のマス 2 のイベントには従わない)。
・3 回目のサイコロの目は 2 です。マス 2 からマス 4 に移動します。2 が設定された移動マスに止まりゴールマスを超えるような移動になるため、ゴールマスにたどり着きます。

入力される値

入力は以下のフォーマットで与えられます。

N T
D_1 D_2 ... D_T
B_1 C_1
B_2 C_2
...
B_N C_N


・1 行目には 2 つの整数 N, T が与えられます。
・2 行目には長さ T の数列 D が与えられます。
・続く N 行の i 行目には、すごろくの i マス目の種類 B_i と数字 C_i が与えられます。
・入力は N+2 行となり、末尾に改行が 1 つ入ります。


入力値最終行の末尾に改行が1つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

期待する出力は T 行からなります。
i 行目には、i ターン目終了時のマスと所持金をこの順に空白区切りで出力してください。
ただし、i ターン目開始時にゴールマスにいる場合は Finished と出力してください。

条件

すべてのテストケースにおいて、以下の条件をみたします。

・2 ≦ N ≦ 100
・1 ≦ T ≦ 100
・1 ≦ D_i ≦ 6
・B_1 = "S" (スタートマス), C_1 = 0
・B_N = "G" (ゴールマス), C_N = 0
・B_i = "P" (所持金イベントマス) または "M" (移動イベントマス) (2 ≦ i ≦ N-1)
・B_i = "P" のとき、-100 ≦ C_i ≦ 100
・B_i = "M" のとき、-10 ≦ C_i ≦ 10 かつ i + C_i ≧ 1 かつ C_i ≠ 0

入力例1

5 3
1 1 2
S 0
P 4
M -1
M 2
G 0

出力例1

2 4
2 4
5 4

入力例2

10 5
6 2 3 1 4
S 0
P -34
P 53
M 5
P 52
M -2
M 4
P 99
P -64
G 0

出力例2

10 0
Finished
Finished
Finished
Finished

入力例3

15 2
6 6
S 0
P -64
M 5
P -76
M 9
M 3
M -1
M 2
M -3
P 73
P -97
M 6
P -96
M -8
G 0

出力例3

6 0
15 0

問題一覧へ戻る

  1. paizaトップ
  2. レベルアップ問題集
  3. すごろくメニュー(言語選択)
  4. 問題一覧 Erlang(Beta)編
  5. すごろくシミュレーション 5 Erlang(Beta)編
ページの先頭へ戻る