Imaginez un tableau bidimensionnel de valeurs booléennes, où les 0 représentent des carrés d'herbe sur un terrain rectangulaire et les 1 représentent des clôtures.
Écrivez une fonction qui accepte le tableau 2D en entrée et détermine si vous pouvez vous déplacer d'une zone d'herbe à une autre zone d'herbe, en utilisant uniquement les mouvements nord / est / ouest / sud, sans tomber dans une clôture.
Si une zone d'herbe dans le tableau est entièrement entourée de clôtures (ce qui signifie que vous ne pouvez pas voyager N / E / W / S pour atteindre toutes les autres zones d'herbe du tableau), la fonction doit retourner false; sinon, cela devrait retourner vrai.
Vous trouverez ci-dessous deux exemples de tableaux que vous pouvez utiliser comme entrées, bien que votre fonction devrait être capable de gérer non seulement ces tableaux, mais tout tableau 2D de valeurs booléennes:
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)
Le code de travail le plus court gagne. Je choisirai le gagnant après une semaine ou s'il n'y a eu aucune nouvelle soumission dans les 24 heures.
1 1 1; 1 0 1; 1 1 1? Il y a une cellule d'herbe au centre. Visuellement, l'herbe au centre est entièrement entourée de clôtures, mais selon votre définition, ce n'est pas le cas.