Dans ce défi, vous calculerez la taille de votre terrain.
Écrivez un programme ou une fonction qui calcule la taille de votre terrain, compte tenu d'un mur que vous avez construit. On vous donne une chaîne d'entrée non vide contenant un ensemble de 4 caractères distincts de votre choix qui représentent les quatre directions "haut", "bas", "gauche" et "droite" (je vais l'utiliser ^ v < >
dans ce défi). Il n'est pas possible de faire des virages à 180 degrés ( <>
ou ^v
), mais vous pouvez traverser votre mur.
La façon dont vous "capturez" la terre est en l'entourant de votre mur. Le mur lui-même est également considéré comme faisant partie de votre terrain. Quelques exemples le rendront plus clair. Je vais utiliser o
pour un terrain qui a été entouré par le mur, x
pour le mur lui-même et S
pour le point de départ du mur, juste pour illustrer comment le mur est construit. La sortie doit correspondre à la taille totale de votre terrain (le nombre de o
, x
et S
dans les cas de test ci-dessous).
Input: >>>>
Land: Sxxxx
Output: 5
Input: <<<^^^>>>vv
Land:
xxxx
xoox
xoox
xxxS
Output: 16
Input: <<<^^^>>>v
Land:
xxxx
x x
x
xxxS
Output: 11
Input: <
Land: xS
Output: 2
Input: >>>>>>vvvvvvvvv<<<<<^^^^>>>>>>>>vvvvvvvvvv<<<<<<<<<<<<<<<^^^^^^^^^>>>vvvvvv<<<<<
Land:
Sxxxxxx
x
x
x
x
xxxxxxxxx
xxxx xoooox x
xoox xoooox x
xoox xoooox x
xoox xxxxxx x
xoox x
xoox x
xxxxxx x
x x
x x
xxxxxxxxxxxxxxxx
Output: 101
Input: >>vvvv>>^^<<<<^
Land:
Sxx
xox
xxxxx
xox
xxx
Output: 17
Input: <<^^^>>>vv
Land:
xxxx
x x
x x
xxS
Output: 11 <- Note, diagonal edges do not close the "loop"
Précisions:
- Vous n'avez pas besoin de dessiner le mur, la sortie ne doit être qu'un entier
- Le format d'entrée est facultatif. Vous pouvez prendre une chaîne avec
<>^v
, une liste de chiffres(1, -1, i, -i)
, une liste de caractères,ABCD
etc.
Il s'agit de code-golf, donc le code le plus court dans chaque langue l' emporte. N'oubliez pas que les explications sont importantes, même dans les langues "normales"!