note: string art mungkin terlihat mengerikan di sini karena keanehan font SE: P :(
Diberikan daftar empat tupel yang mewakili sudut-sudut persegi panjang, gambarkan persegi panjang transparan satu sama lain dalam urutan itu.
Untuk tantangan ini, Anda harus memiliki koordinat terkecil di sudut kiri atas dan sumbu x meningkat ke kanan dan sumbu y meningkat ke bawah.
Tupel empat (x0, y0, x1, y1)
atau (x0, x1, y0, y1)
mewakili (x, y)
pasangan koordinat sudut kiri atas dan kanan bawah dari sebuah persegi panjang (Anda dapat memilih salah satu dari dua format untuk persegi panjang tetapi harus konsisten)
Apa yang saya maksud dengan "persegi panjang transparan"? Nah, untuk tantangan ini, Anda akan menggunakan karakter spasi dan sebagian besar karakter menggambar kotak ; khususnya, semua yang digunakan untuk menggambar persegi panjang, termasuk karakter "tebal". Ketika sebuah persegi panjang transparan digambar, pertama semua garis tipis di ruang yang ditempati menghilang dan semua garis tebal menjadi tipis, dan kemudian persegi panjang itu sendiri ditarik ke atas dalam garis tebal.
Misalnya, jika Anda menggambar persegi panjang di kiri atas dan kemudian di kanan bawah, itu mungkin terlihat seperti ini:
┏━━━━┓
┃ ┃
┃ ┃
┃ ┏━━╇━━┓
┃ ┃ │ ┃
┗━╉──┘ ┃
┃ ┃
┃ ┃
┗━━━━━┛
Untuk menjadi jelas, garis-garis menjadi terang (tebal -> tipis -> tidak ada) untuk semua garis secara ketat di dalam persegi panjang (misalnya, garis yang menghadap ke bawah dipengaruhi untuk tepi atas tetapi bukan tepi bawah).
Uji Kasus
Beberapa baris input akan diberikan, diikuti oleh unicode-art, untuk setiap test case.
0 0 5 5
5 5 10 10
3 3 7 7
2 2 8 8
┏━━━━┓
┃ ┃
┃ ┏━━╇━━┓
┃ ┃┌─┴─┐┃
┃ ┃│ │┃
┗━╉┤ ├╊━┓
┃│ │┃ ┃
┃└─┬─┘┃ ┃
┗━━╈━━┛ ┃
┃ ┃
┗━━━━┛
14 5 15 9
13 2 15 16
6 4 15 11
┏━┓
┃ ┃
┏━━━━━━╇━┫
┃ │ ┃
┃ │ ┃
┃ │ ┃
┃ │ ┃
┃ │ ┃
┃ │ ┃
┗━━━━━━╈━┫
┃ ┃
┃ ┃
┃ ┃
┃ ┃
┗━┛
6 8 10 11
15 12 16 16
14 10 16 16
9 1 15 15
┏━━━━━┓
┃ ┃
┃ ┃
┃ ┃
┃ ┃
┃ ┃
┃ ┃
┏━━╉┐ ┃
┃ ┃│ ┃
┃ ┃│ ┌╊┓
┗━━╉┘ │┃┃
┃ │┠┨
┃ │┃┃
┃ │┃┃
┗━━━━╈┩┃
┗┷┛
Hasilkan lebih banyak kasus uji!
Aturan
- Input dapat dalam format apa pun yang masuk akal untuk daftar empat-tupel. Input dapat menjadi salah satu-diindeks atau nol-diindeks bersama baik sumbu (yaitu sudut kiri atas dapat salah satu dari
(0, 0)
,(0, 1)
,(1, 0)
,(1, 1)
. - Output harus berupa unicode-art seperti yang dijelaskan. Output mungkin tidak memiliki baris baru dan dapat memiliki paling banyak satu baris setelah baris (setelah baris terakhir). Trailing whitespace akan diabaikan untuk tujuan tantangan ini.
Poin kode
Pipa horizontal dan vertikal yang tebal dan terang berada dalam jangkauan [U+2500, U+2503]
. Berbagai pipa sudut berada dalam jangkauan [U+250C, U+251C)
. Pipa tiga-bersenjata berada dalam jangkauan [U+251C, U+253C)
. Pipa empat-bersenjata berada di kisaran [U+253C, U+254C)
. Pipa yang tersisa yang dapat ditemukan dalam program saya tidak pernah benar-benar digunakan.
Typically this uses only 95 printable (from a total of 128) characters defined by the ASCII Standard from 1963.
Jawaban:
Python 3 ,
289286 byteCobalah online!
Mengambil input sebagai daftar 4-tupel
(x0, y0, x1, y1)
:, bersama dengan karakter pipedrawing sebagai berikut:" ╶╺╵└┕╹┖┗╴─╼┘┴┶┚┸┺╸╾━┙┵┷┛┹┻╷┌┍│├┝╿┞┡┐┬┮┤┼┾┦╀╄┑┭┯┥┽┿┩╃╇╻┎┏╽┟┢┃┠┣┒┰┲┧╁╆┨╂╊┓┱┳┪╅╈┫╉╋"
Mendukung kotak dengan lebar atau tinggi nol (menggunakan semua karakter kotak gambar).
Berdasarkan jawaban saya untuk pertanyaan ini , tetapi dimodifikasi untuk mengubah kotak yang ada saat menggambar.
'Tidak Disatukan':
sumber
u
sebagai input._,_,w,h=
dengan*_,w,h=
.Q
tidak memerlukan tanda kurung,Q=(i<X,y<j,x<i,j<Y);
dapat diganti denganQ=i<X,y<j,x<i,j<Y;
untuk dua byte yang disimpan.JavaScript (ES6),
298261 byteDimana
\n
mewakili karakter baris baru literal. Berdasarkan jawaban saya untuk persegi panjang Unicode . Penjelasan: Array string spasi dibuat untuk menggambar. Setiap spasi kemudian diproses dengan mengulang semua kotak di input. Karakter yang terletak di luar kotak kemudian diabaikan tetapi yang di tepi atau di dalam diproses lebih lanjut. Untuk masing-masing dari empat segmen garis yang membentuk karakter (masing-masing diwakili oleh kekuatan 3) maka ada tiga kemungkinan; a) segmen terletak tepat di luar kotak dan harus diabaikan (dicapai dengan melewati parameter 0 bukannya kekuatan 3) b) segmen terletak di tepi kotak dan harus tebal (dicapai dengan memanggilh
fungsi) c) segmen terletak di dalam kotak dan harus diringankan (dicapai dengan memanggilg
fungsi). Karakter kemudian diindeks ke dalam string Unicode. Setelah semua kotak diproses, array kemudian bergabung di baris baru.Tampilkan cuplikan kode
sumber