Diberi segi enam seni ASCII sebagai input, output yang sisi-sisinya semua satu unit lebih panjang.
_____
____ / \
/ \ / \
/ \ / \
\ \ => \ \
\ / \ /
\____/ \ /
\_____/
Segi enam input akan memiliki simetri 180 derajat, tetapi jika tidak, sisi-sisinya dapat memiliki panjang yang berbeda. Di atas, panjang sisi (2, 4, 3) diperbesar menjadi (3, 5, 4). Panjang sisi akan menjadi nol.
Segi enam terbuat dari garis bawah _
, garis miring /
, dan garis miring terbalik \
. Perhatikan bahwa dari tepi horizontal (dibuat dengan garis bawah), tepi atas adalah pada jalurnya sendiri tetapi tepi bawah tidak.
I / O
Saya akan menjadi stickler dan memerlukan format ascii-art di sini: input dan output harus berupa string dengan baris baru yang mewakili gambar, bukan daftar garis. Tentu saja, kode Anda dapat mencetak setiap baris secara bergantian untuk menghasilkan gambar, atau membaca STDIN satu kali untuk input jika bahasa Anda dapat melakukannya.
Detail
Input mungkin menyertakan baris tambahan baru jika Anda mau, tetapi sebaliknya tidak akan memiliki baris kosong. Anda dapat memilih untuk tidak memiliki spasi tambahan di input, atau spasi untuk mengisi setiap baris dengan panjang yang sama (garis terpanjang).
Outputnya harus rata dengan tepi kiri layar, seperti input. Anda mungkin memiliki baris baru tambahan di atas dan di bawah serta spasi tambahan.
Uji kasus
Input diikuti oleh output.
_
/ \
\_/
__
/ \
/ \
\ /
\__/
____
/ \
/ \
\ \
\ /
\____/
_____
/ \
/ \
/ \
\ \
\ /
\ /
\_____/
_
/ \
/ /
/ /
/ /
/ /
\_/
__
/ \
/ \
/ /
/ /
/ /
/ /
\ /
\__/
Papan peringkat
<iframe src="https://xmikee1.github.io/ppcg-leaderboard/?id=185760" width="100%" height="100%" style="border: none;">Oops, your browser is too old to view this content! Please upgrade to a newer version of your browser that supports HTML5.</iframe><style>html,body{margin:0;padding:0;height:100%;overflow:hidden}</style>
IEnumerable
karakter?Jawaban:
Stax , 28 byte
Jalankan dan debug itu
Sepertinya harus ada cara untuk melakukannya sebagian besar dengan regex, tapi aku masih mencari ...
sumber
Retina 0.8.2 , 84 byte
Cobalah online! Bekerja dengan segi enam yang tidak teratur. I / O tidak murni. Penjelasan:
Memperluas bagian dalam segi enam.
Perbaiki di bagian atas.
Memperbaiki bagian bawah.
sumber
JavaScript (ES6),
159 156 153150 byteCobalah online!
Berkomentar
NB: Karakter alternatif digunakan di bawah ini untuk pembatas regex untuk mencegah penyorot sintaks SE agar tidak mengamuk.
sumber
Arang , 48 byte
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Input dan gabungkan semua baris kecuali yang pertama. (Input dalam format JSON akan membuat sebagian besar dari ini tidak perlu dengan penghematan 11 byte.)
Hitung jumlah
/
s,/
s, dan_
s dalam string dan gunakan itu untuk menghitung panjang sisi baru (dalam kasus_
s, sebagai string_
s dari panjang itu).Gambarkan segi enam yang diperbesar.
Solusi alternatif, juga 48 byte:
Cobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Masukkan semua baris. (Input dalam format JSON akan membuat ini tidak perlu dengan penghematan 17 byte.)
Gambarlah bagian kanan atas dan kiri bawah segi enam secara terpisah.
Hitung jumlah
/
s,/
s, dan_
s dalam string dan gunakan itu untuk menghitung panjang sisi baru.Keluarkan bagian atas atau bawah, dan turunkan garis jika ini adalah garis atas.
Gambarlah kedua sisi kanan atau kiri.
sumber
APL (Dyalog Unicode) ,
7574 byte SBCSCobalah online!
'.+'⎕s'&'
pisahkan input menjadi beberapa baris↑⍵
mencampur garis menjadi matriks⍺⍳
ganti' /\_'
dengan0 1 2 3
(0,0,⍨⍉)⍣3⍉
mengelilingi dengan lapisan 0s di atas & bawah dan dua lapisan 0s di kiri & kanan{⊃0~⍨1⌷⍵,⍨⍉⍵}⌺3 3
untuk setiap sel pilih non-0 pertama dari: atas, bawah, kiri, kanan dari lingkungan 3x3 yang berpusat di atasnya2⌈/
Maks berpasangan secara horizontala×1=(+⍀×a)⌊⊖+⍀⊖×a←
pertahankan hanya batas luar dari bukan-0⍺[
]
ganti0 1 2 3
dengan' /\_'
sumber
PowerShell , 126 byte
Cobalah online!
sumber
Perl 5 ,
177156145 byteMungkinkah lebih pendek? Jangan melihat bagaimana dulu. Dengan komentar dan menambahkan baris baru dan header + footer:
Cobalah online!
Baris # 1 membagi string input multi-baris ke dalam array @ l.
Baris # 2 menduplikasi baris kedua dan terakhir tanpa _ chars.
Baris # 3 menambahkan spasi di mana diperlukan pada baris 2 ke detik terakhir.
Baris # 4 melebarkan kedua sisi ___ dengan satu _ dan mengembalikan array baris @l sebagai satu string multi-baris.
sumber