En este desafío, calcularás cuán grande es tu tierra.
Escriba un programa o función que calcule el tamaño de su tierra, dado un muro que ha construido. Se le proporciona una cadena de entrada no vacía que contiene un conjunto de 4 caracteres distintos de su elección que representan las cuatro direcciones "arriba", "abajo", "izquierda" y "derecha" (usaré ^ v < >
en este desafío). No es posible tomar giros de 180 grados ( <>
o ^v
), pero puede cruzar la pared.
La forma en que "captura" la tierra es rodeándola con su muro. El muro en sí también se considera parte de su tierra. Algunos ejemplos lo aclararán más. Lo usaré o
para terrenos que han sido rodeados por el muro, x
para el muro mismo y S
para el punto de partida del muro, solo para ilustrar cómo está construido el muro. El resultado debe ser el tamaño total de su tierra (el número de o
, x
y S
en los casos de prueba a continuación).
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"
Aclaraciones:
- No necesita dibujar el muro, la salida solo debe ser un número entero
- El formato de entrada es opcional. Puede tomar una cadena con
<>^v
, una lista de dígitos(1, -1, i, -i)
, una lista de caracteres,ABCD
etc.
Este es el código de golf, por lo que gana el código más corto en cada idioma . ¡Recuerde, las explicaciones son importantes, incluso en los idiomas "normales"!