В этом испытании вы подсчитаете, насколько велика ваша земля.
Напишите программу или функцию, которая рассчитывает размер вашей земли с учетом стены, которую вы построили. Вам дана непустая входная строка, содержащая набор из 4 различных символов на ваш выбор, которые представляют четыре направления «вверх», «вниз», «влево» и «вправо» (я буду использовать ^ v < >
в этом испытании). Невозможно сделать поворот на 180 градусов ( <>
или ^v
), но вы можете пересечь стену.
То, как вы «захватываете» землю, окружает ее стеной. Сама стена также считается частью вашей земли. Несколько примеров сделают это более понятным. Я буду использовать o
для земли, которая была окружена стеной, x
для самой стены, иS
для начальной точки стены, просто чтобы проиллюстрировать, как строится стена. Выход должен быть общий размер вашей земли (число o
, x
и S
в случаях испытания ниже).
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"
Разъяснения:
- Вам не нужно рисовать стену, вывод должен быть только целым числом
- Формат ввода не является обязательным. Вы можете взять строку с
<>^v
, список цифр,(1, -1, i, -i)
список символовABCD
и т. Д.
Это код-гольф, поэтому самый короткий код на каждом языке выигрывает . Помните, что объяснения важны даже на «обычных» языках!