リバーシメニューのサムネイル
(問題 9)ログ適用 R(Beta)編(paizaランク B 相当)

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

問題

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

(はじめに)



初期盤から N 手のログを順に反映していきます。ルールに反する着手は Error として終了します。途中で両者とも合法手が無くなったら、その時点で勝敗を出力して終了します。

初期盤は中央 4 マスが以下の配置です。


- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - W B - - -
- - - B W - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -


(問題)



初期盤から N 手のログが与えられます。それぞれの手を順に反映し、最終盤を出力してください。ログの途中で両者打てなくなった場合は、その時点で勝敗(B/W/draw)を出力して処理を終了してください。ログの途中でルール違反があれば、その時点で Error を出力して処理を終了してください。

ルール違反となるのは、ログの座標がその時点の手番に対する合法手でない場合です。具体的には次のいずれかです。
・指定マスが空点でない。
・いずれの方向にも 1 個以上の相手石を自石で挟めず、ひっくり返せない。

入力される値

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


N
r1 c1
r2 c2
...
rN cN


先手は B とします。合法手が無い場合は手番をパスします。ただし、ログにパスは含まれません。

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


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

途中終了が無ければ、最終盤を 8 行、各行 8 要素を空白区切りで出力、途中で終局なら B, W, draw のいずれかを 1 行で出力して終了してください。
ただし、ルール違反があれば Error を 1 行で出力して終了してください。

最後は改行し、余計な文字、空行を含んではいけません。

条件

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

・0 ≦ N ≦ 60
・各 ri, ci は 1 ≦ ri, ci ≦ 8 の整数
・初期盤は中央 4 マスが W B / B W(行・列は 1-indexed で (4,5)=B, (5,4)=B, (4,4)=W, (5,5)=W)

入力例1

1
4 3

出力例1

- - - - - - - -
- - - - - - - -
- - - - - - - -
- - B B B - - -
- - - B W - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -

問題一覧へ戻る

  1. paizaトップ
  2. レベルアップ問題集
  3. リバーシメニュー(言語選択)
  4. 問題一覧 R(Beta)編
  5. (問題 9)ログ適用 R(Beta)編
ページの先頭へ戻る