リバーシメニューのサムネイル
(問題 3)合法手の判定 F#(Beta)編(paizaランク C 相当)

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

問題

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

(はじめに)



空きマスに石を置くことができるかどうかを判定します。ある方向に 1 個以上の相手石が連続し、その先を自分の石で挟めるとき、その方向では石をひっくり返せます。8 方向のいずれかでこの条件を満たすとき、その着手は合法です。

(問題)



盤・座標 (r, c)・手番 p が与えられます。(r, c) に p を置くことが合法かどうかを判定して出力してください。

入力される値

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


r c p
L_{a1} L_{b1} ... L_{h1}
L_{a2} L_{b2} ... L_{h2}
...
L_{a8} L_{b8} ... L_{h8}


1 行目に r c p が与えられます。r, c には1始まりの座標、p は B または W です。
続いて、8 行にわたり、空白区切りで 8 個ずつ盤面の行が与えられます。
盤面の各要素は -, B, W のいずれかです。

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


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

合法なら YES、不合法なら NO を出力してください。

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

条件

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

・各マスは -, B, W のいずれか
・1 ≦ r, c ≦ 8

入力例1

4 3 B
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - W B - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -
- - - - - - - -

出力例1

YES

問題一覧へ戻る

  1. paizaトップ
  2. レベルアップ問題集
  3. リバーシメニュー(言語選択)
  4. 問題一覧 F#(Beta)編
  5. (問題 3)合法手の判定 F#(Beta)編
ページの先頭へ戻る