Задача состоит в том, чтобы следовать (нарисовать) путь:
^n
- вверх на n строкvn
- вниз на n строк>n
- справа на n позиций символов<n
- оставлено n символов позиций
n
является целым числом, большим нуля (т.е. вы не можете получить такую команду, как>-2
).- Между командами нет разделителей, правильно сформированный ввод выглядит так:
>5v8<10^3
никакая другая форма ввода не допускается. - Количество команд не ограничено.
- Предполагается, что больше символов не должно проникать во вход.
Примеры.
Ввод - пустая строка, вывод:
*
Ввод либо :
>3
или<3
: обратите внимание, что это не имеет никакого значения для вывода:****
Аналогично для
^3
иv3
:* * * *
Вход:,
>1v2
выход:** * *
Вход:,
^4>3v2<1
выход:**** * * * ** * *
Если вы вернетесь и будете использовать тот же путь, не рисуйте ничего нового. Например
>5<5
******
... хотя вы не рисуете ничего нового, вы явно меняете позицию. Следовательно, если ваш ввод выглядит следующим образом:,
>4<2v3
вывод:***** * * *
Это более сложный пример: 1) путь может пересекаться сам 2) обратите внимание, что последние три шага последней команды сдвигают весь путь вправо. Вход:,
v6>4^3<7
выход:* * * ******** * * * * *****
Вход :
^2v2>3<3v3>4^5v5>3^5>4v2<4v3>4^3v3>3^5>4v2<4v3>7^5>4v2<4v3>9^3<2^2v2>4^2v2<2v3>8^5>2v4>2^4v5<3>6^5>5<5v2>5<5v2>5<4v1>8^3<1^2v2>1v2>2^3v3>2^2>1^2v2<1v3<3>11^3<2^2v2>4^2v2<2v3>5^5>5<5v2>5<5v2>5<4v1>7^5>4v2<4v3>4^3v3>3^5>4v2<3v1<1v2>3^1>1v1
Выход:
* * ***** ***** ***** * * *** * ****** * * * * ****** ***** ***** * * * * * * * * * * * * * * * * * * * * * * * * ***** ***** ***** ***** ***** * * * ****** ** * ** ***** ****** ***** ***** * * * * * * * * * * * * * * * * * * ** * * * * * * * * *** ****** ***** * ****** * * * ** *******************************************************************************************
^2v2>3<3v3>4^5v5>3^5>4v2<4v3>4^3v3>3^5>4v2<4v3>7^5>4v2<4v3>9^3<2^2v2>4^2v2<2v3>8^5>2v4>2^4v5<3>6^5>5<5v2>5<5v2>5<4v1>8^3<1^2v2>1v2>2^3v3>2^2>1^2v2<1v3<3>11^3<2^2v2>4^2v2<2v3>5^5>5<5v2>5<5v2>5<4v1>7^5>4v2<4v3>4^3v3>3^5>4v2<3v1<1v2>3^1>1v1
.Ответы:
MATL , 71 байт
Использует текущий выпуск (6.0.0) языка / компилятора. Работает в Matlab и в Octave.
РЕДАКТИРОВАТЬ (21 июня 2016 г.): из-за изменений в языке код требует нескольких модификаций для запуска в текущей версии (16.0.0). Вы можете попробовать это онлайн, включая необходимые модификации.
Примеры
объяснение
Программа имеет четыре основных шага:
[0 -1]
указывает на один шаг влево. Первая строка является источником пути,[1 1]
*
. Нормализовать до минимального значения1
1
в координатах, указанных матрицей из шага 3, и в0
противном случае. Это тогда преобразовано в матрицу символа.Код:
источник
JavaScript (ES6), 204
211 210Редактировать 1 Исправление ошибки - вывод '*' для пустого ввода
Редактировать 2 Упрощенное декодирование направления в x и y diff
Вот мой ответ на карту сокровищ , пересмотренную для соответствия спецификациям.
Меньше в гольфе и объяснил более или менее
Тестовое задание
источник
*
.Perl, 174 байта
Ожидается ввод в качестве аргумента командной строки. Обязательно процитируйте аргумент!
Пример:
perl 177.pl "<1^2>3v4<5^6>7v8<9^10>11"
Несколько читабельно:
источник
05AB1E , 27 байт
Попробуйте онлайн! (2020 год достаточно близок, так почему бы и нет)
источник