У цьому виклику ви підрахуєте, наскільки велика ваша земля.
Напишіть програму або функцію, яка обчислює розмір вашої землі, враховуючи побудовану стіну. Вам надається не порожній рядок введення, що містить набір з 4-х різних символів на ваш вибір, які представляють чотири напрямки "вгору", "вниз", "вліво" та "праворуч" (я використаю ^ v < >
в цьому виклику). Не можна робити повороти ( <>
або ^v
) на 180 градусів , але ви можете перетнути стіну.
Те, як ви «захоплюєте» землю, - оточуючи її стіною. Сама стіна також вважається частиною вашої землі. Кілька прикладів зробить це більш зрозумілим. Я буду використовувати 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
тощо.
Це код-гольф, тому найкоротший код на кожній мові виграє. Пам'ятайте, пояснення важливі навіть у "звичайних" мовах!