Please sign in first.
公式
D - TaK Code 解説
by
D - TaK Code 解説
by
kyopro_friends
\((i,j)\) の辞書順に「上から \(i\) 行目左から \(j\) 列目を左上とする縦 \(9\) マス横 \(9\) マスの領域がTaK Code の条件を満たすか」を判定し、満たすならばその場で \((i,j)\) を出力すればよいです。
for i = 1..N-8 :
for j = 1..M-8 :
if (i,j)を左上とする領域が条件を満たす:
print(i,j)
配列外参照をしないよう、\(i,j\) のループ範囲に注意してください。
判定部分は次のように、真偽値を返す関数を用意します。
func check(i, j):
// 左上の黒をチェック
for ii = 0..2 :
for jj = 0..2 :
if S[i+ii][j+jj] != '#':
return false
// 右下の黒をチェック
for ii = 6..8 :
for jj = 6..8 :
if S[i+ii][j+jj] != '#':
return false
// 左上の白をチェック
for ii = 0..3:
if S[i+ii][j+3] != '.':
return false
for jj = 0..3:
if S[i+3][j+jj] != '.':
return false
//右下の白をチェック
for ii = 5..8:
if S[i+ii][j+5] != '.':
return false
for jj = 5..8:
if S[i+5][j+jj] != '.':
return false
// 全ての条件を満たす
return true
投稿日時:
最終更新: