マルバツゲームメニューのサムネイル
(問題 11) ログ反映(勝敗判定・違反は敗北) Ruby編(paizaランク D 相当)

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

問題

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

(はじめに)



ログを順に反映しつつ、途中で勝敗が決着したら勝者を出力して中断します。
また、ログがルールを守っていない場合は、その時点でルール違反した側を負けとして、勝者を出力して中断します。

(問題)



すべての要素が - である 3 × 3 の盤面があります。N 個のログが与えられるので、
先手 o、後手 x の順に、それぞれのログを先頭から順に反映させてください。
各手の後に勝敗が決まった場合は、その時点で勝者(o または x)を 1 行で出力して処理を中断してください。
ログがルールを守っていない場合には、その時点でルール違反した側を負けとし、勝者(相手側)を 1 行で出力して処理を中断してください。
最後まで勝敗もルール違反もなければ、最終盤面を出力してください。

入力される値

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

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

途中で勝敗が決まるかルール違反が発生した場合は、勝者(o または x)を 1 行で出力してください。
最後まで勝敗もルール違反もなければ、3 行で最終盤面を出力してください。

条件

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


  • 0 ≦ N ≦ 9

  • 1 ≦ I_k, J_k ≦ 3

入力例1

5
1 1
2 2
1 2
3 3
1 3

出力例1

o

問題一覧へ戻る

  1. paizaトップ
  2. レベルアップ問題集
  3. マルバツゲームメニュー(言語選択)
  4. 問題一覧 Ruby編
  5. (問題 11) ログ反映(勝敗判定・違反は敗北) Ruby編
ページの先頭へ戻る