Tantangan
Ini adalah tantangan sederhana. Diberi dua bilangan bulat positif w
dan h
buat pagar ASCII dengan lebar w
dan tinggi h
. Pagar harus dibangun menggunakan aturan berikut:
- The
+
karakter akan mewakili posting. - The
-
karakter akan digunakan untuk mewakili lebar pagar. - Ini
|
akan digunakan untuk mewakili ketinggian pagar. - Setelah tepat tiga
-
karakter dikeluarkan, satu+
karakter harus dikeluarkan sesudahnya. Tidak termasuk keempat sudut, waktu lain Anda menghasilkan a+
tidak valid. Anda diizinkan mengikuti aturan ini mulai dari kiri atau kanan (lihat contoh), tetapi Anda harus konsisten. - Setelah tepat dua
|
karakter telah dikeluarkan, satu+
karakter harus dikeluarkan sesudahnya. Tidak termasuk keempat sudut, waktu lain Anda menghasilkan a+
tidak valid. Anda diperbolehkan mengikuti aturan ini mulai dari atas atau bawah (lihat contoh), tetapi Anda harus konsisten. - Setiap pagar akan memiliki tepat empat sudut, dan setiap sudut akan diwakili dengan a
+
.
Dengan kata lain: Di setiap tiga -
karakter, Anda harus menampilkan a +
. Dan pada setiap dua |
karakter, Anda harus menampilkan a +
.
Anda dapat mengasumsikan bahwa pagar akan selalu menjadi persegi panjang, dan bahwa keduanya w
dan h
tidak akan pernah lebih besar 100
atau kurang dari itu 1
. Trailing dan / atau spasi putih sebelumnya diizinkan.
Contoh / Kasus Uji
w = 1
h = 1
+-+
| |
+-+
w = 3
h = 2
+---+
| |
| |
+---+
w = 5
h = 7
+---+--+ or +--+---+
| | | |
| | + +
+ + | |
| | | |
| | + +
+ + | |
| | | |
| | + +
+ + | |
| | | |
+---+--+ +--+---+
w = 10
h = 5
+---+---+---+-+ or +-+---+---+---+
| | | |
| | + +
+ + | |
| | | |
| | + +
+ + | |
| | | |
+---+---+---+-+ +-+---+---+---+
w = 4
h = 4
+---+-+ or +-+---+
| | | |
| | | |
+ + + +
| | | |
| | | |
+---+-+ +-+---+
Aturan
- Celah standar berlaku .
- Ini adalah kode-golf , jadi jawaban tersingkat dalam byte menang!
+
sentuhan dua orang ?+-+-+-+-+-+
tidak valid. Maaf bila membingungkan.Jawaban:
C, 131 byte
Cobalah online!
Penjelasan:
sumber
Python 3 ,
140137128119106105 byteCobalah online!
sumber
in
dan[w+1+(w-1)//3]]
di bagian terakhir.'\n') for
juga. Juga, Anda dapat mengubah(w-1)
ke~-w
yang memungkinkan Anda untuk menghapus tanda kurung karena operator unary memiliki prioritas lebih tinggi daripada yang biner. Sama untuk(h-1)
->~-h
dan(a-1)
->~-a
. Cobalah online - 128 bytedef f(w,h)
sama panjangnyalambda w,h
, tetapi memungkinkan Anda untuk menggunakan beberapa baris jika itu membantu Anda menambahkan kode lebih jauha=~-w//3-~w;
untuk menghemat 1 byteMathematica, 165 byte
sumber
Pip , 38 byte
37 byte kode, +1 untuk
-n
bendera.Mengambil lebar dan tinggi sebagai argumen baris perintah. Cobalah online!
Penjelasan
sumber
Arang,
474540 bytePenjelasan: Pekerjaan dengan menggambar setiap sisi yang
-
s /|
s pada gilirannya, memasukkan+
s di mana diperlukan, kemudian finishing dengan+
. Setelah menggambar sisi atas dan kanan, melompat kembali ke awal untuk menggambarnya dalam urutan terbalik, secara efektif menggambar sisi kiri dan bawah. Saya tidak tahu apakah simetri rotasi diizinkan, tetapi jika demikian, maka untuk2725 byte:Membawa ide di atas ke ekstrem dengan menggambar sisi atas, berputar ke kiri, menggambar sisi kanan, berputar lagi, dan kemudian mengulangi untuk menggambar sisi bawah dan sisi kiri secara terbalik.
sumber
JavaScript (ES6),
133132 byteMengambil input dalam sintaks currying:
f(width)(height)
.Cuplikan Tes
sumber
Pyth , 40 byte
Suite uji .
sumber
Java (OpenJDK 8) ,
178177 byteCobalah online!
-1 byte terima kasih kepada @KevinCruijssen
sumber
w->h->
Coba di sini.Arang ,
47 4537 byteCobalah online!
Pendekatan yang berbeda dari @ Neil's : pertama saya membuat string
α
danβ
berisi karakter di perbatasan horizontal dan vertikal, menggunakanRange
operator yang membuat pengulangan string hingga panjang yang diberikan tercapai. Lalu saya mencetaknya dengan urutan yang benar:Tautan ke versi verbose .
sumber
Range
, yang menghemat 3 byte pada pendekatan kedua saya!A…+---÷⁺²×⁴N³αA…+||÷⁺¹×³N²βPα↓βα+↖↑⮌β
.05AB1E , 58 byte
Cobalah online!
Lebih keras di 05AB1E daripada yang saya kira.
sumber