1. paizaラーニングトップ
  2. レベルアップ問題集
  3. 将棋メニュー(言語選択)
  4. 問題一覧 C++編
  5. (問題 16)盤面カウント C++編

将棋メニューのサムネイル
(問題 16)盤面カウント C++編(paizaランク B 相当)

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

問題

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

はじめに



問題 15 にて盤面を文字列にする方法を行ってきました。ここでは、その手法を使って盤面カウントを行っていきます。

将棋には千日手というルールがあります。千日手とは、自分の番にて同じ盤面が 4 回現れた場合には宣言することで引き分けになるというルールです。白と黒別々にカウントを行います。

千日手かどうかの判定は、白、黒それぞれの始まりの盤面を文字列にして辞書でカウントし 4 回現れたかどうかを見ることで判定が出来ます。

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

問題



コマが置かれた盤面 N 個の盤面 L が与えられます。千日手により引き分けにできるか判定してください。

入力される値


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_{1九} L_{2九} ... L_{9九}
L_{1八} L_{2八} ... L_{9八}
...
L_{1一} L_{2一} ... L_{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つ入ります。
文字列は標準入力から渡されます。 標準入力からの値取得方法はこちらをご確認ください
期待する出力

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

千日手により引き分けにできる場合は Yes を、そうでない場合は No を出力してください。

条件

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

  • 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

    No

    問題一覧へ戻る

    ページの先頭へ戻る