Tulis program yang memasukkan dimensi lukisan, lebar anyaman, dan lebar bingkai untuk potret berbingkai. Program harus menampilkan diagram menggunakan simbol X
untuk lukisan, +
untuk anyaman, dan #
untuk pembingkaian. Simbol harus dipisahkan dengan ruang. Trailing whitespace baik-baik saja, selama output secara visual sesuai dengan kriteria. Inputnya bisa 0
.
INPUT: 3 2 1 2 (Lebar, Tinggi, Lebar Matte, Lebar Bingkai)
KELUARAN:
Dalam bentuk teks:
# # # # # # # # #
# # # # # # # # #
# # + + + + + # #
# # + X X X + # #
# # + X X X + # #
# # + + + + + # #
# # # # # # # # #
# # # # # # # # #
Kode yang menang melengkapi kondisi dalam byte sekecil mungkin.
Jawaban:
Python 2 , 98 byte
Cobalah online!
Mencetak kisi yang dipisahkan ruang, mengikuti spesifikasi secara ketat. Saya senang yang
*=
digunakan untuk mengkonversia
danb
dari angka ke string.Python 3 dapat menyimpan beberapa byte dengan menghindari
' '.join
, mungkin lebih dengan menggunakan f-string dan ekspresi penugasan. Terima kasih kepada Jo King untuk -2 byte.Python 3 , 93 byte
Cobalah online!
sumber
JavaScript (ES6),
118 113107 byteCobalah online!
Berkomentar
sumber
MATL , 24 byte
Input adalah: Tinggi, Lebar, Lebar Matte, Lebar Bingkai.
Cobalah online!
Penjelasan
sumber
Bahasa Wolfram (Mathematica) , 142 byte
Cobalah online!
sumber
Arang ,
484744 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Catatan: Ruang tambahan. Sunting: Sekarang menggunakan algoritma @ xnor. Penjelasan:
Masukkan lebar dan tinggi dan ubah menjadi string
X
s.Ulangi karakter
+
dan#
, ubah menjadi string panjang yang diberikan oleh dua input yang tersisa. Kemudian lilitkan kedua tali itu.Awali dan sufiks lukisan dengan string untuk anyaman dan framing.
Ulangi string, ambil karakter horizontal dan vertikal seminimal mungkin, kemudian spasi dua baris, secara implisit mencetak setiap baris pada barisnya sendiri.
sumber
05AB1E (lawas) / 05AB1E
--no-lazy
,3231 byteMengambil input dalam urutan
height, width, matte, frame
. Jika urutan input yang ditentukan dalam tantangan itu ketat (masih menunggu OP untuk verifikasi), yang memimpins
(swap) dapat ditambahkan untuk +1 byte.Diperlukan
--no-lazy
flag compiler Elixir dalam versi baru 05AB1E, karena Elixir memiliki beberapa perilaku aneh karena evaluasi malas untuk peta / loop bersarang (di sini hasilnya tanpa flag ini ).Cobalah online di versi lawas 05AB1E.
Cobalah online di versi baru 05AB1E dengan
--no-lazy
bendera tambahan .Penjelasan:
sumber
Jelly , 17 byte
Cobalah online!
Argumen 1:
[Frame width, Matte width]
Argumen 2:
[Width, Height]
sumber
Kanvas , 24 byte
Coba di sini!
Seharusnya lebih pendek 5 byte, tetapi bukan karena Canvas buggy ..
sumber
R , 119 byte
Cobalah online!
sumber
Python 3.8 (pra-rilis) ,
116115113 byteCobalah online!
Upaya pertama bermain golf, akan segera ditingkatkan.
a
adalah lebar,b
adalah tinggi,c
adalah lebar matte, dand
lebar bingkai.-1 byte menggunakan
:=
operator untuk mendefinisikanh
sebagaie * d
-2 byte terima kasih kepada Jo King menyarankan saya untuk menghapus parameter e dan f
PENJELASAN:
sumber
e
tugas menghemat dua byte,f
tugas tidak menghemat apa pune
danf
tugas setelah menemukan jalang
pintasJavascript, 158 byte
Mungkin bisa dipangkas sedikit
sumber
Perl 6 , 98 byte
Cobalah online!
Ini adalah port jawaban Python xnor .
Perl 6 , 115 byte
Cobalah online!
Codeblock yang di-golf dengan kasar menggunakan penugasan daftar multi-dimensi dari Perl 6. Sebagai contoh,
@a[1;2] = 'X';
akan menetapkan'X'
elemen dengan indeks 2 dari daftar dengan indeks 1, dan@a[1,2,3;3,4,5]='X'xx 9;
akan mengganti semua elemen dengan indeks3,4,5
daftar dengan indeks1,2,3
dengan'X'
.Penjelasan:
Pertama, kami menginisialisasi daftar sebagai a
a+2*(c+d)
olehb+2*(c+d)
persegi panjang#
s.Kemudian kita menetapkan persegi panjang dalam
+
sAkhirnya, kotak terdalam
X
s.sumber
Jelly ,
35312824 byteCobalah online!
Mengambil input dalam bingkai urutan, matte, lebar, tinggi; dipisahkan koma. Menghasilkan gambar ASCII-art dengan bingkai dan matte. Jika urutan input ketat, saya perlu menambahkan lebih banyak byte (sesuai posting asli saya).
Pasangan golf berdasarkan jawaban @ EriktheOutgolfer; Saya menyadari karakter berada dalam urutan ASCII tetapi tidak memikirkan cara terbaik untuk mengambil keuntungan dari itu, dan telah melupakannya
G
. Jawabannya masih lebih baik!sumber
43134
akan membutuhkan 3 karakter penyandian, yang termasuk karakter utama / tambahan untuk menunjukkan bahwa itu dikodekan akan menjadi 5 byte juga. Dan apakah Jelly mungkin memiliki duplikat, karena angka kedua adalah 100 lebih besar dari yang pertama? Tidak yakin apakah tindakan mendorong 43134, menggandakan, mendorong 100, plus, pasangan mungkin dan lebih pendek di Jelly?Perl 5, 115 byte
TIO
sumber
PowerShell , 132 byte
Cobalah online!
sumber