Фон
У мене є купа старих і зернистих чорно-білих зображень. Деякі з них зображають виноградні лози, що лазять на стіну, інші - ні, ваше завдання - класифікувати їх для мене.
Вхід і вихід
Ваш вхід - це прямокутний 2D масив бітів A , поданий у будь-якому зручному форматі. Він не буде порожнім, але не гарантовано, що він містить 0 і 1. У масиві зображено виноградна лоза, якщо виконуються наступні умови:
- Нижній ряд A містить щонайменше одне 1. Це коріння виноградної лози.
- Кожен 1 в A з'єднаний з нижчим рядом шляхом в 1s, який йде лише вліво, вправо і вниз (не вгору і не по діагоналі). Ці стежки - гілки виноградної лози.
Ваш вихід - це узгоджене значення, якщо зображення зображено виноградна лоза, а інше - хибне значення.
Приклади
Цей масив зображує лозу:
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