Учитывая нечетное целое число N (5 <= N <= 51), сгенерируйте лабиринт с длиной стороны N, которая соответствует следующим требованиям:
Лабиринт должен состоять из символов
|
-
и +
. Он должен использовать |
персонажа как вертикальную стену, -
персонаж как горизонтальную стену, и если эта стена поворачивается, персонаж +
должен использоваться.
Ширина пути должна быть одним символом.
Лабиринт должен поворачиваться как минимум четыре раза.
Лабиринт должен иметь внешние стены, которые ломаются в двух точках: в начале и в конце.
Лабиринт должен состоять из одного неразрывного пути, от начала до конца.
Например, следующее является допустимым лабиринтом: ( N = 5)
+---+
| |
| | |
|
--+--
И для N = 7:
--+---+
| |
| | | |
| | | |
| | | |
| |
+---+--
Помните, что это код-гольф , поэтому выигрывает код с наименьшим количеством байтов.
Ответы:
Желе ,
36 35 34 3332 байтаTryItOnline!
Создает nighter ™ наоборот с примерами, такими как:
Как?
(каждый байт сохранённые участвуют довольно нетривиальные изменения, увидеть историю редактирования , если вы заинтересованы, хотя я только что заметил , что ссылка 1 такой же количество байт , как более обычное повторение и присоединиться:
_2⁶ẋ“ ||“|”j
)источник
JavaScript (ES6), 86
92 116Почти сложность колмогорва ...С небольшим боковым размышлением (вдохновленным ответом @ Neil) она может быть очень короткой. Просто поверните на 90 °Тестовое задание
источник
Пакет, 216 байт
|
В пакетном режиме это неудобно, поэтому ярешилповернуть вместо этого примеры.источник
PHP, 99 байт
до ворот вниз
PHP, 157 байт
левые правые ворота
@Titus Спасибо за миниализацию байтов
источник
$p("",$c*($c-4),...)
вместоstr_repeat(...,$c-4)
(-2)$p($n,$c-1," | ")
вместо$p("\n ",$c-1," | ")
($c)%4
(-2), убрать$g
из кода (-1)$c=$argv[1]-1
вместо($c=$argv[1])-1
,<=$c
вместо<$c
и$c
вместо$c-1
(-3)JavaScript (ES6), 87 байт
Рекурсивная функция. Выводит несколько конечных пробелов.
Тестовое задание
Показать фрагмент кода
источник
Рубин 72 или 69 байт
Лямбда-функция. Как показано, возвращает строку, разделенную символом новой строки. Удалите * $ /, чтобы вернуть массив строк.
Рисует лабиринт, повернутый на 90 градусов из примеров. Для каждой строки выбирается строка формата (например,
+%s |
для 1-й строки (нулевая строка отсутствует), и%s
она заменяется подходящим числом-
или пробелами с использованием%
оператора (эквивалентно sprintf, но короче.)источник
Java 7, 228 байт
Использовал аналогичный вертикальный вывод как ответ Jelly @JonathanAllan .
Ungolfed & тестовый код:
Попробуй это здесь.
Выход:
источник
Given an odd integer N (5 <= N <= 51), generate a maze with side length N
. Кажется, у тебя другая длина верхней и нижней стороны ...Python 2, 89 байт
repl.it
Создает внутреннюю стену,
x
как'+---- |'
и внутренний коридор,y
как'| |'
Затем строит список
[x,y,x[::-1],y]
(x[::-1]
является обратнымx
)Затем повторяет этот список
n
раз (как один список), с*n
и усекает его до первыхn
записей, с(...)[:n]
, присоединяется список с переводами строк, с'\n'.join(...)
и выводит результат.источник
Ракетка 187 байт
Использование шаблона отображения @JonathanAllan
Ungolfed:
Тестирование:
Выход:
источник
GNU sed 140 байт
Включает +1 для -r
Попробуйте онлайн!
Принимает участие в унарном ( см. Этот консенсус ).
В основном он вставляет лабиринт размером 5, затем добавляет в начало 2-й и 3-й символ каждой строки столько раз, сколько необходимо. Затем дублирует 3-ю строку (чередуя
|
и) столько раз, сколько необходимо.
Единственная интересная вещь, которую я использовал, - это
m
опция в строке 6, которая позволяет^
и$
сопоставляет (в дополнение к обычному поведению) пустую строку после новой строки и пустую строку перед новой строкой.источник
T-SQL, 123/79 байт
Golfed:
Ungolfed:
Если вы обманываете и делаете только узкий лабиринт, сценарий может быть обработан до 79 байтов:
Golfed:
Ungolfed:
Скрипка для длинного ответа
источник
JavaScript (ES6), 96 байт
Я надеялся, что рекурсия окажется самым коротким маршрутом, и, видимо, это ...
источник