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

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

問題

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

次は実際にサイコロを振り複数人のすごろくをシミュレーションを行います。

K 人で T ターンのゲームを行います。
各ターンではプレイヤー 1 → プレイヤー 2 → ... プレイヤー K の順で行動します。
サイコロは 1 ~ 6 の数字が等確率で出ます。
いまからサイコロを振って、T ターンにわたる K 人のすごろくをシミュレーションし、すごろくの出た目と各ターン後の各プレイヤーのマスの位置と所持金を出力してください。

ただし、ゴールマスを超えるような移動の場合もゴールマス (マス N) にたどり着いたとします。
ゴールマスにたどり着いたら、それ以降のターンでは移動せず Finished と出力してください。
また、移動イベントマスによる移動後のマスではイベントは発生しないものとします。
さらに、移動マスで移動する際にスタートマス (マス 1) より前に戻ることはないことが保証されます。

入力される値

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

N T K
B_1 C_1
B_2 C_2
...
B_N C_N


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


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

期待する出力は T × K 行からなります。
各ターンの出力はプレイヤー 1 から順に、プレイヤーの番号とすごろくの目、ターン終了時のマス、所持金を空白区切りで出力します。
ただし、ターン開始時にゴールマスにいるプレイヤーは、プレイヤーの番号と Finished を出力してください。
これを 1, 2, ..., T ターンの順に出力してください。

条件

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

・2 ≦ N ≦ 100
・1 ≦ T ≦ 100
・2 ≦ K ≦ 10
・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

10 3 2
S 0
P 81
M 2
P -58
M 8
P 50
P 89
P -20
M -1
G 0

出力例1

1 6 7 89
2 1 2 81
1 1 8 69
2 6 8 61
1 3 10 69
2 2 10 61

入力例2

10 5 3
S 0
P -59
M 6
M 8
P 79
M 9
P 8
M 6
P 97
G 0

出力例2

1 6 7 8
2 1 2 -59
3 1 2 -59
1 6 10 8
2 3 5 20
3 2 10 -59
1 Finished
2 2 7 28
3 Finished
1 Finished
2 2 9 125
3 Finished
1 Finished
2 6 10 125
3 Finished

入力例3

20 5 4
S 0
P -72
M 10
P -56
M 7
M -3
P -37
P 92
M -3
P -48
P 39
M -8
M -7
P -29
P 88
M 6
M -10
M 6
M 1
G 0

出力例3

1 6 7 -37
2 1 2 -72
3 1 2 -72
4 6 7 -37
1 3 10 -85
2 2 4 -128
3 2 4 -128
4 2 6 -37
1 6 20 -85
2 1 12 -128
3 6 10 -176
4 6 4 -37
1 Finished
2 5 7 -128
3 1 11 -137
4 5 6 -37
1 Finished
2 4 11 -89
3 1 4 -137
4 1 7 -74

問題一覧へ戻る

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