Immagina una matrice bidimensionale di valori booleani, in cui gli 0 rappresentano quadrati di erba su un appezzamento di terra rettangolare e gli 1 rappresentano recinzioni.
Scrivi una funzione che accetta l'array 2D come input e determina se puoi viaggiare da una qualsiasi area di erba a qualsiasi altra area di erba, usando solo i movimenti nord / est / ovest / sud, senza incorrere in una recinzione.
Se qualsiasi area di erba nell'array è completamente chiusa da recinzioni (il che significa che non è possibile viaggiare N / E / W / S per raggiungere ogni altra area di erba nell'array) la funzione dovrebbe restituire false; altrimenti, dovrebbe tornare vero.
Di seguito sono riportati due array di esempio che è possibile utilizzare come input, sebbene la propria funzione dovrebbe essere in grado di gestire non solo questi ma qualsiasi array 2D di valori booleani:
0 0 0 0 0
0 1 0 0 0
0 1 1 1 1
0 0 0 0 0
0 0 0 1 1
(should return true)
0 1 0 1 0
0 1 1 0 0
0 0 0 0 0
0 0 0 1 0
1 1 1 1 0
(should return false, since the middle 0 in the top row is fully enclosed)
Vince il codice di lavoro più breve. Prenderò il vincitore dopo che è trascorsa una settimana o non ci sono stati nuovi invii entro 24 ore.
1 1 1; 1 0 1; 1 1 1? C'è una cella d'erba al centro. Visivamente la cella d'erba al centro è completamente chiusa da recinzioni, ma per definizione non lo è.