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

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

問題

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

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

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

入力例 1 では以下のように行動します。
・1 回目のサイコロの目は 3 です。スタートであるマス 1 からマス 4 に移動します。所持金は 2 増加し 2 になります。
・2 回目のサイコロの目は 2 です。マス 4 からマス 6 に移動します。所持金は 3 減少し -1 になります。
・3 回目のサイコロの目は 4 です。マス 6 からゴールであるマス 10 に移動します。ゴールマスでは所持金の変化はなく、所持金は -1 のままです。

入力例 2 では、マス 1 → マス 7 → マス 13 → マス 15 (ゴールマスを超える) と途中でゴールマスにたどり着きます。
ゴールマスにたどり着いた後のターンでは Finished と出力します。

所持金が負の数になることや、入力例 3 のようにゴールマスに到達するとは限らないことに注意してください。

入力される値

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

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 回サイコロを振った履歴が空白区切りで与えられます (i 回目に振ったサイコロの目は D_i)。
・続く N 行の i 行目には、すごろくの i マス目の種類 B_i と数字 C_i が与えられます。
・入力は N+2 行となり、末尾に改行が 1 つ入ります。


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

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

条件

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

・2 ≦ N ≦ 100
・1 ≦ T ≦ 100
・B_i = "P" (所持金イベントマス)、-100 ≦ C_i ≦ 100 (2 ≦ i ≦ N-1)
・B_1 = "S" (スタートマス), C_1 = 0
・B_N = "G" (ゴールマス), C_N = 0
・1 ≦ D_i ≦ 6

入力例1

10 3
3 2 4
S 0
P 1
P -3
P 2
P 4
P -3
P 2
P -9
P 8
G 0

出力例1

4 2
6 -1
10 -1

入力例2

15 7
6 6 6 6 5 4 3
S 0
P 3
P 2
P -2
P -10
P 2
P 3
P -1
P -1
P -34
P 100
P 14
P -32
P 4
G 0

出力例2

7 3
13 -29
15 -29
Finished
Finished
Finished
Finished

入力例3

12 2
1 6
S 0
P -7
P -2
P -98
P 22
P 88
P -4
P -69
P 42
P -79
P 84
G 0

出力例3

2 -7
8 -76

問題一覧へ戻る

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