Dengan bilangan bulat ganjil N (5 <= N <= 51), buat sebuah labirin dengan panjang sisi N yang mengikuti persyaratan berikut:
Labirin harus terdiri dari karakter
|
-
dan +
. Itu harus menggunakan |
karakter sebagai dinding vertikal, -
karakter sebagai dinding horizontal, dan jika dinding itu berubah, karakter +
harus digunakan.
Lebar jalan harus satu karakter.
Labirin harus berputar setidaknya empat kali.
Labirin harus memiliki dinding luar, yang pecah pada dua titik: awal dan akhir.
Labirin harus terdiri dari satu jalur tanpa putus, dari awal hingga akhir.
Misalnya, berikut ini adalah labirin yang valid: ( N = 5)
+---+
| |
| | |
|
--+--
Dan untuk N = 7:
--+---+
| |
| | | |
| | | |
| | | |
| |
+---+--
Ingat, ini adalah kode-golf , jadi kode dengan jumlah byte paling sedikit menang.
Jawaban:
Jelly ,
36 35 34 3332 byteTryItOnline!
Buat nighter ™ sebaliknya dengan contoh-contoh seperti:
Bagaimana?
(masing-masing byte diselamatkan terlibat perubahan cukup non-sepele, melihat sejarah mengedit jika Anda tertarik, meskipun saya hanya melihat bahwa Link 1 adalah jumlah byte sama dengan berulang lebih konvensional dan bergabung:
_2⁶ẋ“ ||“|”j
)sumber
JavaScript (ES6), 86
92 116Hampir tantangan kolmogorv-kompleksitas ...Dengan sedikit pemikiran lateral (terinspirasi oleh jawaban @ Neil), ini bisa menjadi sangat singkat. Putar saja 90 °Uji
sumber
Batch, 216 byte
|
s canggung di Batch jadi sayatercerminmemutar contoh sebagai gantinya.sumber
PHP, 99 Bytes
gerbang naik ke bawah
PHP, 157 Bytes
gerbang kanan kiri
@Titus Terima kasih telah mengecilkan byte
sumber
$p("",$c*($c-4),...)
bukannyastr_repeat(...,$c-4)
(-2)$p($n,$c-1," | ")
bukannya$p("\n ",$c-1," | ")
($c)%4
(-2), hapus$g
dari kode (-1)$c=$argv[1]-1
bukannya($c=$argv[1])-1
,<=$c
bukannya<$c
dan$c
bukannya$c-1
(-3)JavaScript (ES6), 87 byte
Fungsi rekursif. Menghasilkan beberapa spasi tambahan.
Uji
Tampilkan cuplikan kode
sumber
Ruby 72 atau 69 byte
Fungsi lambda. Seperti yang ditunjukkan, mengembalikan string yang dipisahkan baris baru. Hapus * $ / untuk mengembalikan array string.
Menggambar labirin yang diputar 90 derajat dari contoh. Untuk setiap baris, string format dipilih (misalnya
+%s |
untuk baris 1 (tidak ada garis nol) dan%s
diganti dengan jumlah yang sesuai-
atau spasi menggunakan%
operator (setara dengan sprintf, tetapi lebih pendek.)sumber
Java 7, 228 byte
Menggunakan keluaran vertikal yang serupa dengan jawaban Jelly @ JonathanAllan .
Tidak digabungkan & kode uji:
Coba di sini.
Keluaran:
sumber
Given an odd integer N (5 <= N <= 51), generate a maze with side length N
. Anda tampaknya memiliki panjang sisi atas dan bawah yang berbeda untuk Anda ...Python 2, 89 byte
repl.it
Membangun dinding internal
x
,, seperti'+---- |'
dan koridor internaly
,, seperti'| |'
Lalu membangun daftar
[x,y,x[::-1],y]
(x[::-1]
adalah kebalikan darix
)Kemudian mengulangi daftar itu
n
kali (sebagai daftar tunggal), dengan*n
, dan memotongnya ken
entri pertama , dengan(...)[:n]
, bergabung daftar dengan umpan baris, dengan'\n'.join(...)
, dan mencetak hasilnya.sumber
Racket 187 byte
Menggunakan pola tampilan oleh @JonathanAllan
Tidak Disatukan:
Pengujian:
Keluaran:
sumber
GNU sed 140 byte
Termasuk +1 untuk -r
Cobalah secara Online!
Mengambil input di unary ( lihat konsensus ini ).
Pada dasarnya ia menyisipkan labirin ukuran 5, lalu menambahkan karakter ke-2 dan ke-3 setiap baris ke awal sebanyak yang diperlukan. Kemudian duplikat baris ke-3 (bergantian
|
dan) sebanyak yang diperlukan.
Satu-satunya hal yang menarik yang saya gunakan adalah
m
opsi pada baris 6 yang memungkinkan^
dan$
untuk mencocokkan masing-masing (selain perilaku normal) string kosong setelah baris baru, dan string kosong sebelum baris baru.sumber
T-SQL, 123/79 byte
Golf:
Tidak Disatukan:
Jika Anda curang dan hanya membuat labirin sempit, skrip dapat di-golf hingga 79 byte:
Golf:
Tidak Disatukan:
Biola untuk jawaban panjang
sumber
JavaScript (ES6), 96 byte
Saya berharap rekursi akan menjadi rute terpendek, dan ternyata itu adalah ...
sumber