sfondo
Ho un sacco di vecchie e sgranate immagini in bianco e nero. Alcuni raffigurano viti che si arrampicano su un muro, altri no: il tuo compito è classificarli per me.
Ingresso e uscita
Il tuo input è un array 2D rettangolare di bit A , fornito in qualsiasi formato conveniente. Non sarà vuoto, ma non è garantito che contenga sia 0 che 1. L'array raffigura una vite se le seguenti condizioni sono valide:
- La fila inferiore di A contiene almeno un 1. Queste sono le radici della vite.
- Ogni 1 in A è collegato alla riga inferiore da un percorso di 1 s che va solo a sinistra, a destra e in basso (non in alto e non in diagonale). Questi percorsi sono i rami della vite.
L'output è un valore di verità coerente se l'input rappresenta una vite e un valore di falsa coerente in caso contrario.
Esempi
Questa matrice raffigura una vite:
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
Questo input non raffigura una vite, poiché c'è un 1 al centro del bordo destro che non è collegato alle radici da un ramo:
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
L'array all-0 non raffigura mai una vite, ma l'array all-1 lo fa sempre.
Regole e punteggio
È possibile scrivere un programma completo o una funzione. Vince il conteggio di byte più basso e non sono consentite scappatoie standard.
Casi test
Ingressi sinceri:
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
Ingressi falsi:
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