Biorąc pod uwagę nieparzystą liczbę całkowitą N (5 <= N <= 51), wygeneruj labirynt o długości boku N, który spełnia następujące wymagania:
Labirynt musi składać się z postaci
|
-
i +
. Musi użyć |
postaci jako ściany pionowej, -
postaci jako ściany poziomej, a jeśli ta ściana się odwróci, postać +
powinna zostać użyta.
Szerokość ścieżki musi wynosić jeden znak.
Labirynt musi skręcić co najmniej cztery razy.
Labirynt musi mieć zewnętrzne ściany, które pękają w dwóch punktach: początku i końcu.
Labirynt musi składać się z jednej niezniszczalnej ścieżki, od początku do końca.
Na przykład następujący poprawny labirynt: ( N = 5)
+---+
| |
| | |
|
--+--
A dla N = 7:
--+---+
| |
| | | |
| | | |
| | | |
| |
+---+--
Pamiętaj, to jest kodowanie w golfa , więc wygrywa kod z najmniejszą liczbą bajtów.
Odpowiedzi:
Galaretka ,
36 35 34 3332 bajtówTryItOnline!
Tworzy nighter ™ na odwrót do przykładów takich jak:
W jaki sposób?
(każdy zapisany bajt wiązał się z dość nietrywialnymi zmianami, jeśli jesteś zainteresowany, przejrzyj historię edycji, chociaż właśnie zauważyłem, że Link 1 to ta sama liczba bajtów, co bardziej konwencjonalne powtarzanie i dołączanie
_2⁶ẋ“ ||“|”j
) :źródło
JavaScript (ES6), 86
92 116Prawie wyzwanie złożoności kolmogorwa ...Przy odrobinie myślenia bocznego (zainspirowanego odpowiedzią @ Neila) może być ono krótsze. Wystarczy obrócić o 90 °Test
źródło
Partia, 216 bajtów
|
S są niewygodne okresowy, tak żeodbiteobracany przykłady, a nie.źródło
PHP, 99 bajtów
w górę w dół bramy
PHP, 157 bajtów
lewe prawe bramy
@Titus Dziękujemy za miniaturyzację bajtów
źródło
$p("",$c*($c-4),...)
zamiaststr_repeat(...,$c-4)
(-2)$p($n,$c-1," | ")
zamiast$p("\n ",$c-1," | ")
($c)%4
(-2), usuń$g
z kodu (-1)$c=$argv[1]-1
zamiast($c=$argv[1])-1
,<=$c
zamiast<$c
i$c
zamiast$c-1
(-3)JavaScript (ES6), 87 bajtów
Funkcja rekurencyjna. Zwraca kilka końcowych spacji.
Test
Pokaż fragment kodu
źródło
Ruby 72 lub 69 bajtów
Funkcja lambda. Jak pokazano, zwraca ciąg oddzielony znakiem nowej linii. Usuń * $ /, aby zwrócić tablicę ciągów.
Rysuje labirynt obrócony o 90 stopni z przykładów. Dla każdego wiersza wybierany jest ciąg formatu (na przykład
+%s |
dla pierwszego wiersza (nie ma wiersza zerowego) i%s
jest on zastępowany odpowiednią liczbą-
lub spacjami za pomocą%
operatora (odpowiednik sprintf, ale krótszy).źródło
Java 7, 228 bajtów
Zastosowano podobny wynik pionowy jak odpowiedź Jelly @JonathanAllan .
Kod niepoznany i testowy:
Wypróbuj tutaj.
Wynik:
źródło
Given an odd integer N (5 <= N <= 51), generate a maze with side length N
. Wygląda na to, że masz inną długość u góry i u dołu ...Python 2, 89 bajtów
repl.it
Buduje ścianę wewnętrzną
x
, podobną'+---- |'
i wewnętrzny korytarz,y
jak'| |'
Następnie buduje listę
[x,y,x[::-1],y]
(x[::-1]
jest odwrotnościąx
)Następnie powtarza tę listę
n
razy (jako pojedynczą listę)*n
, i przycina ją do pierwszychn
wpisów, za pomocą(...)[:n]
, łączy lista z nowymi wierszami oraz za pomocą'\n'.join(...)
i wypisuje wynik.źródło
Rakieta 187 bajtów
Używanie wzorca wyświetlania autorstwa @JonathanAllan
Nie golfowany:
Testowanie:
Wynik:
źródło
GNU sed 140 bajtów
Obejmuje +1 za -r
Wypróbuj online!
Przyjmuje wkład w formie jednostronnej ( patrz ten konsensus ).
Zasadniczo wstawia labirynt wielkości 5, a następnie dodaje 2. i 3. znak każdej linii na początku tyle razy, ile potrzeba. Następnie powiela trzecią linię (naprzemiennie
|
i) tyle razy, ile potrzeba.
Jedyną interesującą rzeczą, której użyłem, jest
m
opcja w wierszu 6, która pozwala^
i$
dopasowuje odpowiednio (oprócz normalnego zachowania) pusty ciąg po nowej linii i pusty ciąg przed nową linią.źródło
T-SQL, 123/79 bajtów
Gra w golfa:
Nie golfowany:
Jeśli oszukujesz i tworzysz tylko wąski labirynt, skrypt można rozegrać do 79 bajtów:
Gra w golfa:
Nie golfowany:
Skrzypce dla długiej odpowiedzi
źródło
JavaScript (ES6), 96 bajtów
Miałem nadzieję, że rekurencja okaże się najkrótszą drogą i najwyraźniej jest to ...
źródło