バックグラウンド
古くて粒子の粗い白黒の画像がたくさんあります。それらのいくつかは壁に登るブドウを描いていますが、そうでないものもあります。あなたの仕事はそれらを私のために分類することです。
入出力
入力は、便利な形式で与えられたビットAの長方形の2D配列です。空にはなりませんが、0と1の両方が含まれているとは限りません。次の条件が満たされる場合、配列はつるを表します。
- Aの一番下の行には少なくとも1つが含まれています。これらはぶどうの根です。
- Aのすべての1は、左、右、下にのみ(上ではなく、斜めにではない)1のパスで最下行に接続されます。これらの道はつるの枝です。
入力がつるを表す場合、出力は一貫した真実の値であり、それ以外の場合は一貫した偽の値です。
例
この配列はつるを表しています:
0 0 1 0 0 1
0 1 1 0 0 1
0 1 0 1 1 1
1 1 0 1 0 1
0 1 1 1 0 1
0 0 1 0 1 1
この入力は、枝によって根に接続されていない右境界線の中央に1があるため、つるを表していません。
0 0 0 1 1 0
0 1 0 1 1 1
0 1 0 1 0 1
0 1 1 1 1 0
0 0 1 1 0 1
all-0配列はつるを決して描写しませんが、all-1配列は常に描写します。
ルールとスコアリング
完全なプログラムまたは関数を作成できます。最小のバイトカウントが優先され、標準の抜け穴は許可されません。
テストケース
真実の入力:
1
0
1
1
01
11
0000
0111
1100
1001
1111
1111
1111
1111
001001
011001
010111
110101
011101
001011
1011011
1001001
1111111
0100000
0111111
1111001
1001111
1111101
0000000
0011100
0010100
0011100
0001000
1111111
0001000
0011100
0010100
0010100
偽の入力:
0
1
0
10
01
000
000
000
011
110
000
111111
000000
101011
111001
010010
001000
000010
110001
001100
111111
110101
010011
111011
000110
010111
010101
011110
001101
11000000
10110001
10011111
11110001
01100011
00110110
01101100
01100001
01111111