вход
- Бинарная матрица представляющая стены подземелья.
- Положение игрока в подземелье.
- Направление которым в данный момент сталкивается игрок (0 = север, 1 = восток, 2 = юг, 3 = запад)
Выход
Псевдо-3D представление стен, находящихся в поле зрения игрока, в виде ASCII-изображения символов.
Ниже приведены несколько возможных выходных кадров, а также соответствующая карта и компас, чтобы помочь им освоиться (но рисование карты и компаса не является частью задачи).
Спецификация
Поле зрения
Игрок имеет стен в его поле зрения, меченном от до . Ниже приведены положения стен относительно игрока (желтым цветом) во всех возможных направлениях.
Рисование стен
Предполагается, что стены должны быть нарисованы от до в этом точном порядке, учитывая, что любая ранее нарисованная часть может быть перезаписана более близкими стенами. Конечно, вы можете реализовать его по-разному, если конечный результат будет таким же.
Весь объем обращается с 7 различными символами: " "
, "'"
, "."
, "|"
, "-"
, "_"
и ":"
.
Поскольку детализация форм стен в теле этой задачи сделает его слишком длинным, вместо этого они представлены в следующей ссылке TIO:
Символы, которые не являются частью данной стены, отмечены значком на "?"
этих диаграммах. Они должны рассматриваться как «прозрачные» символы, которые вообще не рисуются. С другой стороны, все пространства внутри стены являются «сплошными» и должны перезаписывать любые другие символы, которые могли быть нарисованы ранее.
правила
О входе
- Вы можете использовать либо 0-индексированные, либо 1-индексированные координаты.
- Вы можете использовать 4 различных значения по вашему выбору для направления.
- Вы можете предположить, что по краям всегда будут окружающие стены.
- Игрок гарантированно находится на пустом поле.
- Вклад гарантированно будет действительным.
О выходе
- Стены должны быть нарисованы точно так, как описано.
- Тем не менее, формат вывода также гибкий: одиночная строка, массив строк, матрица символов и т. Д.
- Начальные и конечные пробелы приемлемы, если они последовательны.
Это код-гольф .
Контрольные примеры
Все контрольные примеры используют следующую матрицу:
[ [ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ],
[ 1, 0, 1, 1, 1, 0, 0, 0, 0, 1 ],
[ 1, 0, 1, 0, 1, 0, 0, 1, 0, 1 ],
[ 1, 0, 0, 0, 0, 0, 1, 1, 0, 1 ],
[ 1, 0, 0, 1, 0, 0, 0, 1, 0, 1 ],
[ 1, 0, 0, 1, 1, 0, 1, 1, 0, 1 ],
[ 1, 1, 1, 1, 0, 0, 0, 0, 0, 1 ],
[ 1, 0, 0, 0, 0, 0, 0, 0, 0, 1 ],
[ 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 ] ]
x=3, y=3, d=0
x=6, y=4, d=3
x=4, y=4, d=1
x=1, y=5, d=2
x=7, y=7, d=3
x=6, y=6, d=1
x=8, y=1, d=2
x=7, y=6, d=1
Ожидаемые результаты:
------------------------------ ------------------------------
x=3, y=3, d=0: x=6, y=4, d=3:
------------------------------ ------------------------------
__ __ '. .'
|'. .'| | |
| '.--------------.' | |----. |
| | | | | | '.--------. |
| | | | | | | | |
| | | | | | | | |
| | | | | | .'--------' |
| .'--------------'. | |----' |
__|.' '.|__ | |
.' '.
------------------------------ ------------------------------
x=4, y=4, d=1: x=1, y=5, d=2:
------------------------------ ------------------------------
.' __ ________________________ .'
| | |
-------. .----| | |
| '.--------.' | | | |
| | | | | | |
| | | | | | |
| .'--------'. | | | |
-------' '----| | |
| __|________________________|
'. '.
------------------------------ ------------------------------
x=7, y=7, d=3: x=6, y=6, d=1:
------------------------------ ------------------------------
'. '.
|'. |'.
| '. | '.
| | '. .- | |--.--------.--------.-
| | |: :| | | | | |
| | |: :| | | | | |
| | .' '- | |--'--------'--------'-
| .' | .'
|.' |.'
.' .'
------------------------------ ------------------------------
x=8, y=1, d=2: x=7, y=6, d=1:
------------------------------ ------------------------------
'. __ '.
|'. .'| |
| '. .' | |----.--------------.-------
| | '. .' | | | | |
| | |: :| | | | | |
| | |: :| | | | | |
| | .' '. | | | | |
| .' '. | |----'--------------'-------
|.' '.|__ |
.' .'
Связанная проблема:
Эта проблема 2013 года тесно связана. Но он имеет другой критерий выигрыша (вызов кода), гораздо более слабую спецификацию вывода и требует интерактивного ввода-вывода.