1. paizaラーニングトップ
  2. レベルアップ問題集
  3. 将棋メニュー(言語選択)
  4. 問題一覧 Objective-C編
  5. (問題 18)盤面の記録 Objective-C編

将棋メニューのサムネイル
(問題 18)盤面の記録 Objective-C編(paizaランク B 相当)

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

問題

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

はじめに



ここでは棋譜を作るための盤面の記録の取り方をやっていきます。

まず、棋譜を作るために必要な情報について見ていきます。どこのコマがどこに移動したかがまず情報として必要です。また、コマが成ったかどうかも記しておく必要があります。

そのため、今回は次のように記録していきます。

コマの種類、移動前、移動先、成ったか否かのフラグ

ただし、持ちコマからコマを打った場合には移動前は -1 とします。

例えば、白飛車を 5六 から 9六 に移動し、白龍王に成った場合は、

白飛車 5六 9六 True


持ちコマから、7三に黒香車を打った場合には、

黒香車 -1 7三 False


となります。

実際にやってみましょう。

問題



コマが置かれた盤面 N 個の盤面 L が与えられます。i (1 ≦ i ≦ N - 1) 番目の手は i 番目の盤面から i + 1 番目の盤面に遷移させたものとなります。上記の方法でそれぞれの手を記録してください。

入力される値


N
Board_1
Board_2
...
Board_N


1 行目には 1 つの整数 N が与えられます。

13 × i - 11 行目から 13 × i + 1 行目にかけて i (1 ≦ i ≦ N) 番目の盤面 L_i が与えられます。

Board_i (1 ≦ i ≦ N) は以下の形で与えられます。

L_i_{1九} L_i_{2九} ... L_i_{9九}
L_i_{1八} L_i_{2八} ... L_i_{9八}
...
L_i_{1一} L_i_{2一} ... L_i_{9一}
n_i
motigoma_i_白
m_i
motigoma_i_黒

13 × i - 12 + j (1 ≦ j ≦ 9) 行目には n = 10 - j の漢数字としたとき、9 つの文字列 L_i_{1n},L_i_{2n},L_i_{3n},L_i_{4n},L_i_{5n},L_i_{6n},L_i_{7n},L_i_{8n},L_i_{9n} が与えられます。

13 × i - 2 行目には 1 つの整数 n_i が与えられます。

13 × i - 1 行目には n_i 個の文字列 motigoma_i_白_1, motigoma_i_白_2, ..., motigoma_i_白_{n_i} が与えられます。

13 × i 行目には 1 つの整数 m_i が与えられます。

13 × i + 1 行目には m_i 個の文字列 motigoma_i_黒_1, motigoma_i_黒_2, ..., motigoma_i_黒_{m_i} が与えられます。

入力は 13 × N + 1 行となり、末尾に改行が 1 つ入ります。


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

答えを N - 1 行出力してください。

i (1 ≦ i ≦ N - 1) 行目には、i 番目の手の記録を記したものを出力してください。

条件

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

  • 2 ≦ N ≦ 500


  • L_i (1 ≦ i ≦ N) の要素は 1 文字目が 黒,白 のいずれかで、2,3 文字目が 歩兵,王将,角行,飛車,金将,銀将,香車,桂馬,龍王,龍馬,と金,成銀,成香,成桂 のいずれかである 3 文字の文字列かーーー


  • motigoma_i_白 (1 ≦ i ≦ N) の要素は 1 文字目が で、2,3 文字目が 歩兵,角行,飛車,金将,銀将,香車,桂馬 のいずれかである 3 文字の文字列


  • motigoma_i_黒 (1 ≦ i ≦ N) の要素は 1 文字目が で、2,3 文字目が 歩兵,角行,飛車,金将,銀将,香車,桂馬 のいずれかである 3 文字の文字列


  • 0 ≦ n_i, m_i ≦ 38 (1 ≦ i ≦ N)


  • L_1 は初期盤面


  • L_i は L_{i - 1} から 1 手動かしたもの (2 ≦ i ≦ N)
  • 入力例1

    3
    黒香車 黒桂馬 黒銀将 黒金将 黒王将 黒金将 黒銀将 黒桂馬 黒香車
    ーーー 黒飛車 ーーー ーーー ーーー ーーー ーーー 黒角行 ーーー
    黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵
    ーーー 白角行 ーーー ーーー ーーー ーーー ーーー 白飛車 ーーー
    白香車 白桂馬 白銀将 白金将 白王将 白金将 白銀将 白桂馬 白香車
    0

    0

    黒香車 黒桂馬 黒銀将 黒金将 黒王将 黒金将 黒銀将 黒桂馬 黒香車
    ーーー 黒飛車 ーーー ーーー ーーー ーーー ーーー 黒角行 ーーー
    黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵
    ーーー 白角行 ーーー ーーー 白金将 ーーー ーーー 白飛車 ーーー
    白香車 白桂馬 白銀将 白金将 白王将 ーーー 白銀将 白桂馬 白香車
    0

    0

    黒香車 黒桂馬 黒銀将 黒金将 ーーー 黒金将 黒銀将 黒桂馬 黒香車
    ーーー 黒飛車 ーーー ーーー 黒王将 ーーー ーーー 黒角行 ーーー
    黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵
    ーーー 白角行 ーーー ーーー 白金将 ーーー ーーー 白飛車 ーーー
    白香車 白桂馬 白銀将 白金将 白王将 ーーー 白銀将 白桂馬 白香車
    0

    0

    出力例1

    白金将 6一 5二 False
    黒王将 5九 5八 False

    入力例2

    6
    黒香車 黒桂馬 黒銀将 黒金将 黒王将 黒金将 黒銀将 黒桂馬 黒香車
    ーーー 黒飛車 ーーー ーーー ーーー ーーー ーーー 黒角行 ーーー
    黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵
    ーーー 白角行 ーーー ーーー ーーー ーーー ーーー 白飛車 ーーー
    白香車 白桂馬 白銀将 白金将 白王将 白金将 白銀将 白桂馬 白香車
    0

    0

    黒香車 黒桂馬 黒銀将 黒金将 黒王将 黒金将 黒銀将 黒桂馬 黒香車
    ーーー 黒飛車 ーーー ーーー ーーー ーーー ーーー 黒角行 ーーー
    黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵
    ーーー 白角行 ーーー ーーー 白飛車 ーーー ーーー ーーー ーーー
    白香車 白桂馬 白銀将 白金将 白王将 白金将 白銀将 白桂馬 白香車
    0

    0

    黒香車 黒桂馬 黒銀将 黒金将 黒王将 黒金将 黒銀将 黒桂馬 黒香車
    ーーー 黒飛車 ーーー ーーー ーーー ーーー ーーー 黒角行 ーーー
    黒歩兵 黒歩兵 黒歩兵 ーーー 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵
    ーーー ーーー ーーー 黒歩兵 ーーー ーーー ーーー ーーー ーーー
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵
    ーーー 白角行 ーーー ーーー 白飛車 ーーー ーーー ーーー ーーー
    白香車 白桂馬 白銀将 白金将 白王将 白金将 白銀将 白桂馬 白香車
    0

    0

    黒香車 黒桂馬 黒銀将 黒金将 黒王将 黒金将 黒銀将 黒桂馬 黒香車
    ーーー 黒飛車 ーーー ーーー ーーー ーーー ーーー 黒角行 ーーー
    黒歩兵 黒歩兵 黒歩兵 ーーー 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵
    ーーー ーーー ーーー 黒歩兵 ーーー ーーー ーーー ーーー ーーー
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    ーーー 白歩兵 ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    白歩兵 ーーー 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵
    ーーー 白角行 ーーー ーーー 白飛車 ーーー ーーー ーーー ーーー
    白香車 白桂馬 白銀将 白金将 白王将 白金将 白銀将 白桂馬 白香車
    0

    0

    黒香車 黒桂馬 黒銀将 黒金将 黒王将 ーーー 黒銀将 黒桂馬 黒香車
    ーーー 黒飛車 ーーー ーーー ーーー 黒金将 ーーー 黒角行 ーーー
    黒歩兵 黒歩兵 黒歩兵 ーーー 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵
    ーーー ーーー ーーー 黒歩兵 ーーー ーーー ーーー ーーー ーーー
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    ーーー 白歩兵 ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    白歩兵 ーーー 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵
    ーーー 白角行 ーーー ーーー 白飛車 ーーー ーーー ーーー ーーー
    白香車 白桂馬 白銀将 白金将 白王将 白金将 白銀将 白桂馬 白香車
    0

    0

    黒香車 黒桂馬 黒銀将 黒金将 黒王将 ーーー 黒銀将 黒桂馬 黒香車
    ーーー 黒飛車 ーーー ーーー ーーー 黒金将 ーーー 黒角行 ーーー
    黒歩兵 黒歩兵 黒歩兵 ーーー 黒歩兵 黒歩兵 黒歩兵 黒歩兵 黒歩兵
    ーーー ーーー ーーー 黒歩兵 ーーー ーーー ーーー ーーー ーーー
    ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    ーーー 白歩兵 ーーー ーーー ーーー ーーー ーーー ーーー ーーー
    白歩兵 ーーー 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵 白歩兵
    ーーー 白角行 ーーー ーーー 白飛車 ーーー 白金将 ーーー ーーー
    白香車 白桂馬 白銀将 白金将 白王将 ーーー 白銀将 白桂馬 白香車
    0

    0

    出力例2

    白飛車 8二 5二 False
    黒歩兵 4七 4六 False
    白歩兵 2三 2四 False
    黒金将 6九 6八 False
    白金将 6一 7二 False

    問題一覧へ戻る

    ページの先頭へ戻る