Tantangan ini adalah cut'n paste dari Enlarge ASCII art , tetapi dibalik , menggunakan karakter setengah blok PetSCII yang berbasis :
string=" ▝▘▀▗▐▚▜▖▞▌▛▄▟▙█"
Jadi tujuannya adalah mengurangi dengan 1/2
mengajukan ascii-art . Untuk sampel, dari string:
OOOOOO OOOOOO OOOOOO OOOOOOO OOOOOO OOOOOO OO OOOOOOO
OO OO OO OO OO OO OO OO OO OO OO
OO OO OO OO OO OOOOO OO OOO OO OO OO OOOOO
OO OO OO OO OO OO OO OO OO OO OO OO
OOOOOO OOOOOO OOOOOO OOOOOOO OOOOOO OOOOOO OOOOOOO OO
Anda harus membuat:
▟▀▀▘▟▀▀▙▐▛▀▙▐▛▀▀ ▗▛▀▀ ▟▀▀▙▐▌ ▐▛▀▀
█ █ █▐▌ █▐▛▀ ▐▌ ▜▌█ █▐▌ ▐▛▀
▝▀▀▘▝▀▀▘▝▀▀▘▝▀▀▀ ▀▀▀ ▝▀▀▘▝▀▀▀▝▘
(atau bahkan:
▗▛▀▀▗▛▀▜▖█▀▜▖█▀▀▘ ▟▀▀▘▗▛▀▜▖█ █▀▀▘
▐▌ ▐▌ ▐▌█ ▐▌█▀▘ █ ▝█▐▌ ▐▌█ █▀▘
▀▀▀ ▀▀▀ ▀▀▀ ▀▀▀▘ ▝▀▀▘ ▀▀▀ ▀▀▀▘▀
;-)
atau di mana perpipaan:
wget -O - https://codegolf.stackexchange.com/q/19123/9424 |
sed -ne '/<pre><code>/,/<\/code><\/pre>/{//{/\//q};s/<pre><code>//;p}'
('l2v2l6v2'+ 'e1l1v3l2'+
'v3e1v7e1v7e1v7e1l2v6e1l4v5'+
'e1l6v4e1l8v3e1l7l3v2e1l9l3v1')
.replace(/[lve]\d/g,function
(c){return Array(-~c[1]).
join({l:' ',v:'Love'
,e:'\n'}[c[0
]])})
bisa memberi:
▗▟█████▙▟█████▄
▜█████████████▛▘
▝▀███▙▛█████▀
▝▀▜██▀▘
Beberapa sampel:
Dengan (kurang-lebih) aturan yang sama:
- Masukan dari STDIN atau file
- Setiap karakter yang dikirim harus diwakili, hanya spasi putih yang harus tetap kosong .
- Ini juga kode-golf , jadi skor terendah menang. Skor dihitung sebagai:
+1
dengan karakter, untuk dihitung dalam karakter, bukan dalam byte yaitu:s=' ▝▘▀▗▐▚▜▖▞▌▛▄▟▙█'
menghitung 20 karakter, bukan 52 !!-10
untuk penjelasan;+20
untuk penggunaan alat font eksternal atau pustaka.
xterm -xrm 'XTerm*renderFont:false' &
untuk membuka jendela konsol yang dapat menampilkan ini dengan benar.Jawaban:
GolfScript (90 karakter)
Banyak dari ini digunakan untuk menangani array yang tidak rata. Kasus uji buruk:
berisi 3 kotak 2x2 berbeda dengan hanya satu dari 4 sel yang mengandung karakter apa saja.
Lebih buruk lagi,
zip
transposisi untuk memotong kolom menjadi pasangan memberikan hasil yang sama untuk["xx" "xxx"]zip
dan["xxx" "xx"]zip
. Karena itu saya mulai dengan melakukan padding out untuk memastikan bahwa semua garis memiliki panjang genap yang sama, dan bahwa ada sejumlah garis yang genap.Perhatikan bahwa program ini mengasumsikan bahwa penerjemah akan memperlakukan "▗▖▄▝▐▞▟▘▚▌▙▀▜▛█" sebagai string dengan panjang 48, meskipun sesuai instruksi dalam pertanyaan saya menghitungnya sebagai 16 karakter ditambah pembatas.
Saya telah menguji ini dengan kemampuan terbaik saya, tetapi saya tidak dapat menemukan font monospace yang benar-benar menerjemahkan karakter-karakter tersebut dengan benar.
sumber
zip
array yang kasar, dan saya cukup terkejut dengan apa yang tampaknya dilakukan pada misalnya["##" "###"]
. Saya harus memikirkan kembali pendekatan saya.Perl 6 , 159 karakter (192 byte)
Cobalah online!
sumber
Bash (203 karakter)
atau
sumber
Perl (268 karakter)
atau
sumber