Diberikan teks seperti ini:
# #### ## #
## # ## #
#### ##
Keluarkan teks yang sama tetapi dengan menghubungkan piksel dengan karakter ─│┌┐└┘├┤┬┴┼
. Jika sebuah piksel tidak memiliki tetangga, jangan mengubahnya.
Jadi output dari teks terakhir adalah:
│ ─┬── ┌─ │
└─ │ ┌┘ │
└──┘ ─┘
- Anda dapat mengambil input sebagai array boolean.
- Input akan selalu mengandung setidaknya 1 piksel.
- Anda dapat menghitung karakter kotak gambar sebagai 1 byte.
- Anda dapat menganggap input diisi dengan spasi.
Uji kasus
## #
=>
── #
###
#
=>
─┬─
│
##### ##
# # #
########
=>
─┬─┬─ ┌─
│ │ │
─┴─┴──┴─
# #
#####
# #
=>
│ │
─┼─┼─
│ │
# # # # #
# # # #
# # # # #
# # # #
# # # # #
=>
# # # # #
# # # #
# # # # #
# # # #
# # # # #
#####
#####
#####
#####
#####
=>
┌┬┬┬┐
├┼┼┼┤
├┼┼┼┤
├┼┼┼┤
└┴┴┴┘
Karena ini adalah kode-golf , kode terpendek menang.
-|r7LJE3TW+
adalah pengganti 1 byte-char yang cocok untuk karakter blok.Jawaban:
Jelly ,
605251504948 byteMenyimpan satu byte berkat @ Dennis.
Input adalah array boolean dari 1 dan 0. Ulangi setiap kolom dan setiap baris untuk mengkonversi kepala dan ekor setiap infiks ukuran 3 dari sepasang digit biner ke desimal, dan mengalikannya dengan pusat setiap infiks. Kemudian jumlah itu dengan sendirinya untuk menemukan indeks
'#───│┌┐┬│└┘┴│├┤┼ '
.Cobalah online! ( kasus 2 ) ( kasus 3 ) ( kasus 4 )
Penjelasan
Ini bergantung pada ide yang sama dengan jawaban saya di J tetapi alih-alih memproses pada setiap subarray 3x3, saya memproses setiap baris dan setiap kolom sambil tetap mendapatkan tabel indeks yang sama.
Lebih dari setengah byte dihabiskan untuk menghasilkan daftar karakter kotak
'#───│┌┐┬│└┘┴│├┤┼ '
. Literal string dimulai dengan“
Jelly dan memiliki arti berbeda tergantung pada terminatornya. Di sini terminator’
berarti bahwa string akan diuraikan sebagai titik-titik kode dari setiap karakter sesuai dengan halaman kode Jelly , dan mengkonversi dari daftar basis 250 digit ke desimal.Kemudian konversikan desimal itu ke daftar digit dalam basis bijective 61 dan naikkan masing-masing dengan 9471 untuk memindahkannya ke dalam rentang karakter kotak dan konversi masing-masing menggunakan Python
chr
. Kemudian tambahkan dengan karakter literal”#
dan tambahkan spasi⁶
.sumber
J ,
827266 byteInput adalah tabel boolean dari 1 dan 0. Aturan menyatakan bahwa karakter kotak masing-masing dihitung sebagai satu byte, bukan tiga, dan yang telah diterapkan di sini.
Pemakaian
Penjelasan
Pertama input diisi dengan 0 di semua sisi.
Kemudian setiap subarray ukuran 3 dipilih
Maka hanya 5 nilai di setiap subarray yang dipertimbangkan
Nilai
ABCD
- nilai dipilih dengan meratakan masing-masing subarray dan memilih pada indeks1 7 3 5
. Nilai-nilai tersebut dikalikan denganE
yang ada di indeks 4. Kemudian dikonversi dari daftar digit biner ke desimal, dan ditambahkan olehE
. Thex
nilai-nilai yang tidak diperlukan.Ini digunakan sebagai indeks untuk memilih karakter yang akan digambar sesuai tabel di bawah ini (disusun ulang sedikit untuk bermain golf). Kolom terakhir cocok dengan nilai output dari setiap subarray ke karakter kotak.
Selain itu, dalam J, string
' #───│┌┐┬│└┘┴│├┤┼'
menggunakan karakter 8-bit sehingga memiliki panjang 47 (untuk setiap byte) untuk 17 karakter yang dibutuhkan. Perintahucp
mengubahnya menjadi karakter 16-bit yang memungkinkannya menjadi panjang 17.sumber
JavaScript (ES6),
155121103102 karakterSunting: disimpan 18 byte dengan bantuan ETHproduk
Sunting: disimpan 1 byte dengan menggunakan parameter ganti 1 () sebagai
'#'
Bagaimana itu bekerja
Kami beralih pada semua
#
karakter yang ditemukan dalam string input. Untuk masing-masing dari mereka, kami menguji apakah tetangganya juga#
karakter menggunakant()
fungsi:Parameter
x
darit()
fungsi offset tetangga sehubungan dengan posisi saat inip
. Kami menggunakan -1 / + 1 untuk menguji tetangga kiri / kanan dan -w / + w untuk tetangga atas / bawah (di manaw
lebar baris, yaitu posisi break baris pertama + 1).Setiap tetangga diberi bobot berbeda (1, 2, 4 atau 8) sesuai dengan kompas berikut:
Setiap kombinasi berat mengarah ke nilai unik dalam [0 .. 15]. Misalnya, jika tetangga di bagian atas dan tetangga di sebelah kanan ditetapkan, jumlahnya akan menjadi 1 + 4 = 5, yang diterjemahkan ke dalam
└
menggunakan tabel ini:Karena itu,
'#│─┘─└─┴││┐┤┌├┬┼'[weight_sum]
mengarah pada karakter yang diharapkan.sumber
s=>(w=s[0].length+1,s=s.join`\n`).replace(/#/g,(_,p)=>'#│─┘─└─┴││┐┤┌├┬┼'[t=x=>s[p+x]>' ',t(-w)+2*t(-1)+4*t(1)+8*t(w)])
s=>s.replace(/#/g,(_,p)=>'#│─┘─└─┴││┐┤┌├┬┼'[t=x=>s[p+x]>' ',t(-w)+2*t(-1)+4*t(1)+8*t(w)],w=s.indexOf`\n`+1)
Python 2.7,
318315 byte (270267 karakter)Saya yakin ini bisa di-golf lebih lanjut (terutama saya ingin menyingkirkan komentar lini pertama yang menyebalkan itu) tetapi inilah entri saya:
Inilah penjelasan tentang bagaimana semuanya bekerja:
EDIT: Menghapus beberapa spasi sebelumnya
for ... in ...
sumber
JavaScript (ES6),
150139133131 karakterMengambil input sebagai array string, mis
f(["###", " # "])
.Cuplikan tes
Tampilkan cuplikan kode
sumber
ALPACA , 414 + 2 = 416 byte
Membutuhkan
-fI
bendera.Solusi ini menggunakan jumlah byte yang sangat besar, tetapi unik karena menggunakan otomat seluler. ALPACA biasanya digunakan sebagai bahasa logam, tapi di sini saya menggunakannya sebagai bahasa pemrograman.
Versi tidak disatukan:
sumber
PHP, 203 byte
Ini mungkin dapat dilakukan dengan cara yang lebih singkat.
membaca input dari STDIN. jalankan bersama
-r
.sumber
Python 3, 149 byte
Mengambil input like
##\n #\n
dan mengembalikan output like['─', '┐', '\n', ' ', '│', '\n']
.sumber
R,
199212 byteEDIT: Ini sekarang fungsi, bukan potongan kode.
Inputnya adalah matriks
m
1s dan 0s. Ini sangat jelek dan berantakan.Beberapa tes:
sumber
x = "┼"
bekerja dengan baik untuk saya.Perl,
8988 byteTermasuk +2 untuk
-0p
. Karakter khusus dihitung sebagai 1 byte, tetapi untuk membuatnya benar-benar ditampilkan sebagai karakter tunggal, yang terbaik adalah menambahkan opsi -C.Berikan masukan pada STDIN dengan garis-garis yang diberi spasi agar semua memiliki panjang yang sama:
connect.pl
:sumber
MATL, 102 karakter
Saya memberi nilai pada tetangga (1, 2, 4 atau 8); jumlah mereka akan cocok dengan karakter dalam string yang berisi karakter gambar. Saya pikir masih ada banyak ruang untuk perbaikan, tetapi untuk konsep kasar:
Perbaikan yang harus dilakukan:
Cobalah secara Online! (mungkin tidak memiliki dukungan karakter menggambar kotak)
sumber