1. paizaラーニングトップ
  2. レベルアップ問題集
  3. 将棋メニュー(言語選択)
  4. 問題一覧 Rust(Beta)編
  5. (問題 19)棋譜の作成 Rust(Beta)編

将棋メニューのサムネイル
(問題 19)棋譜の作成 Rust(Beta)編(paizaランク A 相当)

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

問題

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

はじめに



最後に問題 18 で作成した情報をもとに棋譜を作成していきます。

まず、棋譜を作成する際に、座標を記録します。それは移動後の座標を 2 文字で表現します。ただし、直前に打たれた手と同じ位置ならば代わりに同と表記します。

次にコマの種類です。コマの種類を前 1 文字で表します。桂馬なら桂、歩兵なら歩です。しかし、見分けつけるために、成銀、成桂、成香はそのまま 2 文字で表すものとし、龍馬は馬で表します。また、黒の王将は玉として表記します。

以降は状況に応じてつけるかつけないかが変わります。

まず、同じ種類のコマが同じ位置に到達可能であるならば、動作を足します。1段上に動く(漢数字が増える場合)は上、同じ段の場合には寄、1段下に動く(漢数字が減る場合)は引と表記します。

動作をもって判別不可能である場合は、左からきたか、右からきたかを足します。これは打ったプレイヤーから見て左か右かで判断します。左の場合には左、右の場合には右を足します。ただし、金将、銀将などの場合には横移動がない場合は直を足します。ただし、龍馬、龍王の場合は直を使わず左右のどちらかで表記します。

動作のみ、左右のみのどちらでも判別不可能である場合は、両方足します。この場合は左右から足します。

最後にコマが成ることが出来る場合は成、不成を足します。また、持ちコマからコマを打ち、盤面上で同じ種類のコマが同じ位置に移動可能であるとき打を足します。

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

5九飛車成


持ちコマから、7三に黒香車を打ち、7三に移動可能な黒香車がある場合には、

7三香打


3六と4六に龍馬があり、4六の龍馬を4五に移動した場合は、

4五馬右


となります。

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

問題



コマが置かれた盤面 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

    5二金右
    5八玉

    入力例2

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

    0

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

    0

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

    0

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

    0

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

    0

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

    0

    出力例2

    5二飛
    4六歩
    2四歩
    6八金
    7二金

    問題一覧へ戻る

    ページの先頭へ戻る