Neste desafio, você calculará o tamanho da sua terra.
Escreva um programa ou função que calcule o tamanho da sua terra, considerando um muro que você construiu. Você recebe uma sequência de entrada não vazia contendo um conjunto de 4 caracteres distintos de sua escolha que representam as quatro direções "para cima", "para baixo", "esquerda" e "direita" (usarei ^ v < >
neste desafio). Não é possível fazer curvas de 180 graus ( <>
ou ^v
), mas você pode atravessar a parede.
A maneira como você "captura" a terra é cercando-a com sua parede. O muro em si também é considerado parte de sua terra. Alguns exemplos tornarão mais claro. Usarei o
para terrenos cercados pela parede, x
para a parede em si e S
para o ponto de partida da parede, apenas para ilustrar como a parede é construída. A saída deve ser o tamanho total da sua terra (o número de o
, x
e S
nos casos de teste abaixo).
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"
Esclarecimentos:
- Você não precisa desenhar a parede, a saída deve ser apenas um número inteiro
- O formato de entrada é opcional. Você pode usar uma string com
<>^v
, uma lista de dígitos(1, -1, i, -i)
, uma lista de caracteresABCD
etc.
Este é o código-golfe, portanto o código mais curto em cada idioma vence. Lembre-se, as explicações são importantes, mesmo em idiomas "regulares"!