Ви дослідник, картографуючи невідомий світ. Ваш корабель везуть на вітрі. Куди йде, хто знає?
Кожен день у своєму шпигунському стеклі ви бачите риси на північ, південь, схід та захід. Ви завжди бачите чотири такі риси, що відповідають кардинальним вказівкам. Ваші шпигунські вікна повідомляють такі символи ASCII:
~~.*
, ~~~~
, ~.^^
,~#~#
Символи розташовані в порядку (північ, південь, схід, захід).
Це символи: ~
= море, .
= узбережжя, ^
= гора, *
= дерево, #
= недійсне (відсутність спостережень, це відбувається кожного разу, коли ви бачите край світу, або краєвид затьмарений туманом). Ваш шпигун бачить рівно по одній одиниці в кожному напрямку.
Щовечора ви дивитесь на зірки, щоб побачити, як далеко ви подорожували. Дивлячись на зірки, повідомляється про такий символ "ascii":
n
, s
, e
,w
відповідні Північ, Південь, Схід і Захід відповідно. Ви завжди переміщуєте рівно одну одиницю на північ, південь, схід чи захід щовечора. Тож ви як дослідник отримаєте нескінченний потік символів:
~~.*n~~~~s~~.*s~.**
Ваше завдання - вивести двовимірну карту світу (де ?
невідомі частини карти, північ вгору, схід праворуч):
?~~~??????
?~~~??????
?~~~.^^.??
?~~.***.~~
~~.*^^*.~~
~~~..~~~~~
~~~~~~~~~~
~~~~~~~~~~
Для простоти припустимо, що ви починаєте з нижнього лівого кута карти. Припустимо, всі карти 8х8.
Ось простий 3х3 приклад. Припустимо, карта виглядає приблизно так:
~.~
~^~
~.~
З наступним входом: ~#.#n~~^#s
Ви отримаєте цей вихід:
~??
~^?
~.?
Більше прикладів входів і виходів:
вхід
~#~#n~~~#n~~~#n~~~#n~~~#n~~.#n~~.#n#~~#e#.~~e#.~~e#.~~e#.~~e#~~~e#~~~e#~#~s~~#~s~~#~s~~#~s~~#.s~~#~s~~#~s~##~w~#~~w.#~~w^#~~w.#~~
вихід
~~~~~~~~
~....~~~
~.????~~
~~????~~
~~????.~
~~????~~
~~?.^.~~
~~~~~~~~
Вхід:
~#~#e~#~~e~#~~e.#~~e^#~~n.~..n~^~.n~.~~n.~~.n.~~*n~.~.n#.~~w#.~~w#.~~s~*..s..*.s*~.~s.~~~s
Вихід:
?~~~~~??
?....~??
?.**.~??
?~..~~??
?~~~~~??
?~~..~??
~~~.^.??
~~~~~~??
~#~#n~~~#n~~~#n~~~#n~~~#n~~.#n~~.#n#~~#e#.~~e#.~~e#.~~e#.~~e#~~~e#~~~e#~#~s~~#~s~~#~s~~#~s~~#.s~~#~s~~#~s~##~w~#~~w.#~~w^#~~w
) невірний, а вихід має бути ??
там, де він говорить?.