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

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

問題

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

すごろくの盤面とプレイヤーの人数 K、サイコロを振る回数 T が与えられます。
サイコロは 1 ~ 6 の数字が等確率で出ます。

ゴール後に順位賞金があるすごろくで遊びます。
T ターン目が終わった後、i 番目にゴールした人は所持金が Q_i 増加します。

K 人で T ターンのゲームを行います。
各ターンではプレイヤー 1 → プレイヤー 2 → ... プレイヤー K の順で行動します。
サイコロは 1 ~ 6 の数字が等確率で出ます。
いまからサイコロを振って、T ターンにわたる K 人のすごろくをシミュレーションし、すごろくの出た目と各ターン後の各プレイヤーのマスの位置と所持金を出力してください。
さらに、T ターンが終わりゴールしている人が順位賞金を受け取った後、最も所持金の多いプレイヤーを出力してください。
ただし、そのようなプレイヤーが複数いる場合、すべてのプレイヤーを出力してください。

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

入出力例 1 では、3 ターン目終了後、プレイヤー 1,2 はどちらもゴールしており、所持金は 5 と 9 です。
プレイヤー 1,2 の順にゴールしたため、プレイヤー 1 は順位賞金 6、プレイヤー 2 は順位賞金 1 を受け取ります。
所持金は 11 と 10 になるため、所持金の最も多いプレイヤー 1 を出力します。

入出力例 2 では、プレイヤー 1 は 3 ターン目終了後にゴールマスにいないため順位賞金を受け取りません。

入出力例 3 では、プレイヤー 1 と 2 の所持金が同じであるため、両方のプレイヤーを出力します。

入力される値

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

N T K
Q_1 Q_2 ... Q_K
B_1 C_1
B_2 C_2
...
B_N C_N


・1 行目には 3 つの整数 N, T, K が与えられます。
・2 行目には i 番目にゴールした人の順位賞金を表す数列 Q が空白区切りで与えられます。
・続く N 行の i 行目には、すごろくの i マス目の種類 B_i と数字 C_i が与えられます。
・入力は N+2 行となり、末尾に改行が 1 つ入ります。


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

期待する出力は T × K + 1 行からなります。
各ターンの出力はプレイヤー 1 から順に、プレイヤーの番号とすごろくの目、ターン終了時のマス、所持金を空白区切りで出力します。
ただし、そのターン一回休みのプレイヤーはプレイヤーの番号と Skip を出力してください。
また、ターン開始時にゴールマスにいるプレイヤーは、プレイヤーの番号と Finished を出力してください。
これを 1, 2, ..., T ターンの順に出力してください。
さらに T × K + 1 行目には、全員がゴールし順位賞金を受け取った後、最も所持金の多いプレイヤーを出力してください。
ただし、そのようなプレイヤーが複数いる場合、すべてのプレイヤーを空白区切りで出力してください。

条件

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

・2 ≦ N ≦ 100
・1 ≦ T ≦ 100
・2 ≦ K ≦ 10
・1 ≦ Q_N ≦ Q_{N-1} ≦ ... ≦ Q_1 ≦ 500
・B_1 = "S" (スタートマス), C_1 = 0
・B_N = "G" (ゴールマス), C_N = 0
・B_i = "P" (所持金イベントマス) または "M" (移動イベントマス) または "Z" (一回休みイベントマス) (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
・B_i = "Z" のとき、C_i = 0

入力例1

7 3 2
6 1
S 0
P 9
M 4
P -6
P 5
Z 0
G 0

出力例1

1 4 5 5
2 1 2 9
1 2 7 5
2 1 7 9
1 Finished
2 Finished
1

入力例2

7 3 2
6 1
S 0
P 9
M 4
P -6
P 5
Z 0
G 0

出力例2

1 4 5 5
2 1 2 9
1 1 6 5
2 1 7 9
1 Skip
2 Finished
2

入力例3

7 3 2
6 2
S 0
P 9
M 4
P -6
P 5
Z 0
G 0

出力例3

1 4 5 5
2 1 2 9
1 2 7 5
2 1 7 9
1 Finished
2 Finished
1 2

入力例4

25 5 4
378 309 308 19
S 0
M -1
M 9
M 4
Z 0
P -7
P 90
M 3
P 47
P 64
Z 0
P -35
P -25
M -2
P 52
M -7
M 3
Z 0
Z 0
M -10
M -7
M -3
P 58
P 51
G 0

出力例4

1 6 7 90
2 1 1 0
3 1 1 0
4 6 7 90
1 3 10 154
2 2 12 0
3 2 12 0
4 2 9 137
1 6 9 154
2 1 13 -25
3 6 18 0
4 6 15 189
1 5 12 154
2 1 12 -25
3 Skip
4 5 10 189
1 4 9 154
2 1 13 -50
3 1 19 0
4 1 11 189
4

問題一覧へ戻る

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