4
ネザーポータルの検出
ビデオゲームMinecraftは、仮想世界を構成する3D 整数ラティスにさまざまな種類のブロックを配置および削除することをすべて目的としています。各格子点には、ブロックを1つだけ含めるか、空にすることができます(公式には「空気」ブロック)。この課題では、3Dワールドの1つの垂直2Dプレーンと、1つのタイプのブロック(黒曜石)のみを考慮します。 黒曜石が垂直面で空の長方形の輪郭を形成するとき、ネザーポータルを作成できます。空の長方形は、幅2単位×高さ3単位から幅22単位×高さ22単位までの任意のサイズです。長方形の角は黒曜石で縁取られる必要はなく、側面のみである必要があります。 たとえば、X黒曜石で.空であると仮定します(数字は単に識別のためであり、空でもあります)。 ................................... ..XXXX....XXXX....XXXXXXXXX........ ..X..X...X....X..X.........X..XXXX. ..X.1X...X.2..X..X...3...X.X..X.... ..X..X...X....XXXX.........X..X.6X. ..XXXX....XXXX...XXXXXXXXXXX..X..X. .............X.4.X....X.5.X...XXXX. .............X...X....X...X........ ..............XXX......XXX......... ................................... このグリッドには、3つの有効なポータルが含まれています。 ポータル1は2 x 3ユニットで、完全に空で、黒曜石で囲まれています。したがって、それは有効です。 ポータル2は4 x 3で、完全に空で、黒曜石で囲まれています。したがって、それは有効です。 ポータル3は完全に空ではありません。したがって、それは無効です。 ポータル4は3 x 3で、完全に空で、黒曜石で囲まれています。したがって、それは有効です。 ポータル5は3 x 2ユニットで、小さすぎます。したがって、それは無効です。 ポータル6には境界線の一部がありません。したがって、それは無効です。 チャレンジ 黒曜石と空のグリッドのこれらの文字列表現を取り込んで、存在する有効なネザーポータルの数を出力するプログラムまたは関数を作成します。 入力は、stdin、ファイル、または関数の引数から取得できます。 、テキストのすなわち完全な矩形グリッドを少なくとも1ワイド文字と背の高い、のみ含む-あなたは、入力が常にうまく形成されていると仮定するXと.。オプションで、最後の行の後に末尾の改行があると仮定できます。 必要であれば、あなたは、任意の2つの異なる使用することができ、印刷可能なASCII文字の代わりに文字をXして.。 黒曜石はグリッドの境界上にある可能性があります。境界を超えるものはすべて空と見なされます。 入力例-出力は次のようになります4。 ................................................................ ...................................XXXXXXXXXXXXXXXXXXXXXXXXX.... ..XXXX....XXXX....XXXXXXXXX........X.......................X.... ..X..X...X....X..X.........X..XXXX.X.......................X.... ..X..X...X....X..X.......X.X..X....X.......................X.... ..X..X...X....XXXX.........X..X..X..XXXXXXXXXXXXXXXXXXXXXXXX.... ..XXXX....XXXX...XXXXXXXXXXX..X..X.X......................X..XXX .............X...X....X...X...XXXX.X......................X..X.. .............X...X....X...X........X......................X..X.. ..............XXX......XXX........XXXXXXXXXXXXXXXXXXXXXXXX...X.. ..................................XX.........................XXX 得点 最少バイトの送信が勝ちです。
53
code-golf