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

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

問題

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

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

これからあなたは T ターンのゲームを行います。
各ターンであなたは 1 ~ 6 が等確率で出るサイコロを振ります。
各ターンのサイコロの出た目と移動後のマス、所持金を出力してください。
ただし、ゴールマスを超えるようなサイコロの目がでた場合もゴールマス (マス N) にたどり着いたとします。
ゴールマスにたどり着いたら、それ以降ターンではサイコロは振らず Finished と出力してください。

実装では、「サイコロの作成 1」の問題のように乱数を用いてサイコロを振る処理を実装してください。

入力例 1 では、例えば以下のように行動できます。
・サイコロを振って 3 が出る。マス 1 からマス 4 に移動する。所持金は 2 増加して 2 になる。
・サイコロを振って 4 が出る。マス 4 からマス 8 に移動する。所持金は 9 減少して -7 になる。
・サイコロを振って 4 が出る。ゴールマスを超える移動になるため、ゴールマス (マス 10) にたどり着く。所持金は変化せず -7。

入力される値

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

N T
B_1 C_1
B_2 C_2
...
B_N C_N


・1 行目には 2 つの整数 N, T が与えられます。
・続く N 行の i 行目には、すごろくの i マス目の種類 B_i と数字 C_i が与えられます。
・入力は N+1 行となり、末尾に改行が 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

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

出力例1

3 4 2
4 8 -7
4 10 -7

入力例2

15 15
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

6 7 3
1 8 2
1 9 1
6 15 1
Finished
Finished
Finished
Finished
Finished
Finished
Finished
Finished
Finished
Finished
Finished

入力例3

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

出力例3

4 5 4
3 8 -5
5 10 -5

問題一覧へ戻る

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