マルバツゲームメニューのサムネイル
(問題 10) ログ反映(ルール違反で中断) D(Beta)編(paizaランク D 相当)

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

問題

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

(はじめに)



前問では、ルールを守っているログを順に反映し最終盤面を出力しました。
本問では、ログの途中でルール違反があった場合、ただちに Error を出力して処理を中断します。

ここでのルールとは、

  • 手番は先手 o、後手 x が交互に置く(入力では駒種は与えられないため、1 手目を o、2 手目を x とみなして反映します)

  • 空いているマス(-)にのみ置く



(問題)



すべての要素が - である 3 × 3 の盤面があります。N 個のログが与えられるので、
先手 o、後手 x の順に、それぞれのログを先頭から順に反映させてください。
ただし、途中でルール違反(空いていないマスに置こうとする等)が発生した場合には、その時点で Error と出力し、処理を中断してください。

なお、途中でいずれかのプレイヤーの勝敗が確定しても、ここではその後のログの反映を続けます(勝敗確定は中断条件ではありません)。

入力される値

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

N
I_1 J_1
I_2 J_2
...
I_N J_N


1 行目には整数 N が与えられます。続く N 行のうち、k 行目 (1 ≦ k ≦ N) には整数 I_k, J_k が与えられます。
I_k は行番号、J_k は列番号を表します。
入力は合計で N+1 行からなり、入力値最終行の末尾に改行が 1 つ入ります。


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

ルール違反が発生しなかった場合は、3 行で最終盤面を出力してください。
ルール違反が発生した場合は、その時点で Error のみ 1 行で出力してください。

条件

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


  • 0 ≦ N ≦ 9

  • 1 ≦ I_k, J_k ≦ 3

入力例1

4
1 1
1 2
1 1
2 2

出力例1

Error

問題一覧へ戻る

  1. paizaトップ
  2. レベルアップ問題集
  3. マルバツゲームメニュー(言語選択)
  4. 問題一覧 D(Beta)編
  5. (問題 10) ログ反映(ルール違反で中断) D(Beta)編
ページの先頭へ戻る