1. paizaラーニングトップ
  2. レベルアップ問題集
  3. ゲーム・確率DPメニュー(言語選択)
  4. 問題一覧 JavaScript編
  5. (問題 5) NG長方形ゲーム step.1 JavaScript編

ゲーム・確率DPメニューのサムネイル
(問題 5) NG長方形ゲーム step.1 JavaScript編(paizaランク A 相当)

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

問題

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

問題 4 までとは違う問題についてここからは学習していきます。


問題

3×3 のグリッドが与えられます。AさんとBさんはグリッドの格子点 (16 個) を以下のように選んでいきます。

今まで選んだ任意の 4 点がそれぞれの辺がグリッドの辺に平行な長方形にならないように格子点を選ぶ。

先に行動が出来なくなった人が負けです。今までの 2 人の選んだ点の座標が与えられるので、最適戦略を行ったときの勝敗を判定してください。


この問題を解くために必要なことについてステップごとに行っていきます。

ここでは終了条件について、学習していきます。

まず初めに、ある盤面が与えられたときにそのゲームはもう終了しているかについて判定していきます。

ゲームの終了条件はそれぞれの辺がグリッドの辺に平行な長方形となる 4 点が存在することです。この場合、ゲームは終了しています。

グリッド上のそれぞれの辺がグリッドの辺に平行な長方形を全探索してみましょう。左上と右下の点が確定すれば、それぞれの辺がグリッドの辺に平行な長方形は 1 通りに定まります。よって、左上と右下の点を全探索してみましょう。

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

(問題)



3×3 のグリッドが与えられます。16 個の整数 S_{i,j} (1 ≦ i ≦ 4, 1 ≦ j ≦ 4) が与えられるので、ゲームがこの時点で終了しているかを判定してください。S_{i,j} (1 ≦ i ≦ 4, 1 ≦ j ≦ 4) は上から i 行目、左から j 列目の格子点がすでに選ばれていれば 1、そうでなければ 0 となっています。

入力される値

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


S_{1,1} S_{1,2} S_{1,3} S_{1,4}
S_{2,1} S_{2,2} S_{2,3} S_{2,4}
S_{3,1} S_{3,2} S_{3,3} S_{3,4}
S_{4,1} S_{4,2} S_{4,3} S_{4,4}


i (1 ≦ i ≦ 4) 行目には 4 つの整数 S_{i,1} S_{i,2} S_{i,3} S_{i,4} が与えられます。
入力は合計で 4 行からなり、入力値最終行の末尾に改行が 1 つ入ります。


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

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

ゲームが終了していれば Yes をそうでなければ No を出力してください。

条件

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


  • 0 ≦ S_{i,j} ≦ 1 (1 ≦ i ≦ 4, 1 ≦ j ≦ 4)

入力例1

1 0 0 1
0 0 0 1
0 1 0 1
1 0 0 1

出力例1

Yes

入力例2

1 0 0 1
0 0 1 1
0 1 0 1
0 0 0 1

出力例2

No

入力例3

0 1 0 0
1 0 1 0
0 1 0 0
0 0 0 0

出力例3

No

問題一覧へ戻る

ページの先頭へ戻る