(問題 10) ログ反映(ルール違反で中断) Java編(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
問題一覧へ戻る