Sayangnya salah satu penulis buku komik terbaik meninggal kemarin sore. Banyak bintang Hollywood, musisi, aktor, dan banyak orang membayar upeti kepada penulis yang luar biasa ini, jadi kita harus melakukan sesuatu juga.
Tantangan
Cetak Logo The Avengers
Catatan: Anda dapat menggunakan karakter lain sebagai pengganti # selain karakter spasi; sementara Anda harus menggunakan karakter spasi untuk ruang
Dalam ASCII-art
######
###############
##### ##########
#### ####### ####
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### #### ### ###
### ########### ###
### ########### ###
### #### ### ###
### ### ### ###
#### #### ####
######## ######
#################
###
Pilihan
Siapa (menurut Anda) pahlawan dan penjahat terbesarnya di seluruh jagat raya yang menakjubkan?
Aturan standar kode-golf berlaku
code-golf
ascii-art
kolmogorov-complexity
Luis felipe De jesus Munoz
sumber
sumber
Jawaban:
Jelly ,
625958 byteTerima kasih kepada @JonathanAllan untuk bermain golf 1 byte!
Cobalah online!
Bagaimana itu bekerja
adalah bijective base-250 integer literal, yang menggunakan karakter pada halaman kode Jelly sebagai digit.
Literal mengkodekan bilangan bulat , yang bertobat untuk perduabelas, menghasilkan .10250938842396786963034911279002199266186481794751691439873548591280332406943905758890346943197901909163 30 b 620 b 40 b a 54 a 64771433841333139413468423468423467433467433466 b 466 b 465453465363431424 b 43.896.860 b a 3 1230 b 620 b 40 b a 54 a 64771433841333139413468423468423467433467433466 b 466 b 465453465363431424 b 43896860 b a 312
b12
Ada beberapa nol, karena 14 spasi (mis.) Dikodekan sebagai 3 spasi, 0 hash, dan 11 spasi. Ini mempertahankan basis kecil (menjalankan terbesar terdiri dari 17 hash), tanpa menambahkan logika tambahan ke decoder.
Ė
(enumerasi) awali setiap digit basis-12 dengan indeks berbasis-1, kemudianŒṙ
lakukan decoding run-length.Sekarang, untuk setiap integer dalam array yang dihasilkan,
Ḃ
ekstrak bit yang paling tidak signifikan, lalua⁶
(DAN spasi) menggantikan yang dengan spasi, sambil membiarkan nol tidak berubah.Akhirnya, pisahkan
s27
array karakter yang tidak diformat menjadi potongan dengan panjang 27, yangY
dipisahkan oleh baris baris.sumber
R ,
198,173,163,157,144, 142 byteCobalah online!
Juga
R
menghormati Stan yang agung.Catatan:
#
kita menggunakan karakter4
karena menyimpan 2 byte dan:4
tampaknya mini "miring"A
)Penjelasan :
Menerapkan Run Length Encoding (
rle
fungsi) pada karakter string (tidak termasuk'\n'
) mengembalikan 88 pengulangan alternating<space>,<hash>,<space>,<hash>,<space>,<hash>...
.Oleh karena itu, 88 repetisi adalah semua nilai dalam rentang
[1,17]
, dengan menjumlahkan64
kita mendapatkan poin kode dari huruf yang[A...Q]
mendapatkan string:"NFMOJEDJFDGGADCCHDACCCACIDACDFHDBCDFHDBCDFGDCCDFGDCCDFFKDFFKDFEDECDFECFCDCADBDKDCHIFHQJC"
Karenanya kode pada dasarnya melakukan operasi yang berlawanan:
sumber
#
, menggunakan0
di tempat"#"
harus menyimpan 2 byte lebih. @ J.Apakah itu bisa bekerja lebih baik untuk gzip Anda juga.Bubblegum ,
71666564 byteTerima kasih kepada @ovs karena bermain golf dengan 1 byte!
Cobalah online!
sumber
#
ke!
.Python 2, 129 byte
Cobalah online!
sumber
\n
dari string yang dikompresi.Arang ,
716867 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Penjelasan:
Keluarkan setengah dari lingkaran.
Refleksikan dan gambarkan di bagian bawah.
Gambarlah lengan kiri dan palang A.
Gambarlah lengan kanan A.
Ubah semua karakter menjadi
#
s.sumber
C (gcc) ,
244243242 byteCobalah online!
-1 Terima kasih kepada Peter Cordes
-1 Berkat ceilingcat
Menggunakan kompresi bit.
Penjelasan:
Tujuannya adalah untuk mencetak satu set angka dalam biner menggunakan spasi dan # sebagai digit yang mewakili logo. Sedikit sihir bash mengubah logo menjadi topeng biner:
Ini menghasilkan 'angka' biner:
Ada pola yang jelas di tengah di mana setiap baris berisi
### ### ###
Kita dapat menghemat ruang dengan mengompresi bagian tengah itu berdasarkan pada penghematan pola itu dan ATAU menentangnya. Selain itu, semua baris itu hanya menambahkan beberapa hal ke kiri bagian tengah, jadi kami membuat
z
makro yang mengambil??????????????
dan mengubahnya menjadi###??????????????### ###
. Ini melibatkan bithifting kiri oleh 10 dan OR-ing dengan biner dari pola itu, yaitu 117441415.Sekarang kita dapat lebih mudah memahami kode:
sumber
x?y:0
diganti denganx&&y
, atau apakah prioritas operator tidak berfungsi? Mungkin dengan&
bukannya,
memisahkan 3 panggilan fungsi karena&
memiliki prioritas lebih tinggi dari&&
atau,
( en.cppreference.com/w/c/language/operator_precedence ). Atau bukan karena hanya,
menyediakan titik urutan untuk pencetakan vs rekursi untuk menghindari perilaku yang tidak terdefinisi.&&
benar karena prioritas, sementara&
tidak korsleting. Sampai sekarang saya belum menemukan alternatif yang lebih pendek, meskipun saya tidak akan mengesampingkannya.&
atau|
atau^
mengganti,
( karena mereka tidak mengalami hubungan arus pendek) dan&&
mengganti?
(karena itu tidak). Suka_<19 && b() & puts() & main(_+1);
(spasi ditambahkan untuk dibaca). Urutan evaluasi tidak terdefinisi, yang sebenarnya mungkin merupakan perilaku yang tidak terdefinisi karena efek samping yang tidakstdout
diikuti pada en.cppreference.com/w/c/language/eval_order , tetapi dalam praktiknya setiap kompiler yang diberikan akan memilih beberapa urutan untuk set target yang diberikan + pilihan.T-SQL,
341338 byte4 jeda baris pertama hanya untuk keterbacaan, jeda baris terakhir adalah bagian dari string literal.
Mirip dengan upeti Adam West saya, saya secara manual menyandikan string yang panjang, dan melakukan penggantian berikut:
*7
digantikan oleh+REPLICATE('#',7)
$4
digantikan oleh+SPACE(4)
&
akan digantikan oleh pemecah baris di dalam tanda kutipIni menghasilkan string perintah SQL besar :
Yang, ketika dijalankan, menghasilkan output yang diperlukan.
Panjang, tetapi masih lebih baik daripada solusi berbasis set terbaik saya ( 463 byte ):
sumber
CHAR(8000)
sebagai gantinyaVARCHAR(max)
(perintah besar adalah 1453 byte)CHAR(2E3)
tetapi sepertinya tidak seperti itu. Saya juga menyimpan satu byte dengan menggunakan line break literal, bukanCHAR(13)
.Kanvas ,
747371 byteCoba di sini!
sumber
JavaScript (ES6),
173170 byteCobalah online!
Node.js , 163 byte
Asalkan array string adalah output yang valid:
Cobalah online!
sumber
05AB1E ,
1018864 byte-24 byte dengan membuat port jawaban @ Dennis ♦ 'Jelly .
Cobalah online.
Penjelasan:
Lihat tip tambang 05AB1E ini (bagian Bagaimana cara mengkompresi bilangan bulat besar? Dan Cara mengompresi daftar bilangan bulat? ) Untuk memahami cara kerja kompresi bilangan bulat dan daftar.
sumber
•∍ΔÎë,½=bOÅ.âαUΔ'òõƶαÔγλ#xÆ]~”FbćÁ˜Ð”wнQ_wā©•12вDg„ #s∍S×J27ô»
dengan mengganti„#
danεN>yи}˜è
denganDg„ #s∍S×
C (gcc) ,
174168164160 byte-6 byte terima kasih kepada Dennis.
Cobalah online!
sumber
/// , 170 byte
Cobalah online!
sumber
Bash ,
192176 byteCobalah online!
-16 Terima kasih atas manatwork
Ini mirip dengan jawaban C saya, kecuali hanya menggunakan kompresi basis-16 mentah dan melewati bc, kemudian menggunakan tr untuk mengkonversi 1 ke # dan 0 ke ruang. Setiap baris memiliki 1 ditambahkan padanya dan dilucuti untuk mempertahankan keselarasan.
Sayangnya
dc
lebih pendek daribc
.sumber
^
. Namun yang lebih baik, gunakancut -c2-
sebagai gantised
bagian.echo
dan bahkan lebih pendek dengandc
bukannyabc
: Coba online!echo
, tapi ayolah -dc
untuk Stan Lee ... Anda pasti bercanda;)Haskell,
170163 byteEdit: -7 byte terima kasih kepada @ Ørjan Johansen
Cobalah online!
Spasi dikodekan sebagai karakter huruf besar (panjang:
Z
turun ke karakter), tanda hash sebagai karakter huruf kecil (panjang:a
untuk karakter) dan tiga terakhir#
dari setiap baris ditambah baris baru sebagai spasi. Fungsim
menerjemahkannya.sumber
"###\n"
.Perl 6 ,
136112 byteCobalah online!
Mem-parsing nomor 128 basis dari nilai-nilai ordinal string terkompresi, mengkonversi ke basis 2 dan mengganti
1
s dengan spasi. Ini menggunakan nol sebagai karakter utama. String ini memiliki 9 byte nol, yang merupakan kesalahan untuk mengetik di TIO. Saya akan menggunakan basis 127 untuk jumlah byte yang sama, tetapi tidak ada nulls, tetapi yang memiliki carriage return, yang tampaknya tidak mungkin untuk dibedakan dari baris baru:(
Penjelasan:
sumber
J ,
130128 byteCobalah online!
Solusi awal
J , 164 byte
Cobalah online!
sumber
PHP ,
286212209208 byteCobalah online!
sumber
Perl 5 , 181 byte
Cobalah online!
sumber
MATLAB : 144 Bytes
Cobalah online! (Secara teknis dalam Oktaf)
Penjelasan:
Ini menggunakan strategi yang sama dengan digEmAll di R, hanya dengan sintaks MATLAB. Perbedaan utama adalah bahwa MATLAB memiliki konversi otomatis dari karakter ke integer.
sumber
C # (.NET Core) , 199 byte
Cobalah online!
Menggunakan pendekatan yang sama dengan solusi saya untuk penghormatan kepada Adam West .
sumber
Deadfish ~ ,
726723 bytes-3 byte terima kasih kepada @squid
Cobalah online!
Karena belum pernah melihat / membaca sesuatu yang Marvel dan hanya mengandalkan spoiler, tampaknya Thanos adalah yang terbaik.
sumber
Turing Machine But Way Worse - 16913 bytes
Dibuat dengan generator program ASCII_only
sumber
mengempis, 79 byte
eJyVkcsJADAIQ ++ ZIpD9dyxUqrGUgjlpHvglXdqCJymk1yEiaRXEIOXzuBHCiKObReUxUzYaMdt2wmTBg / FmNXndgLRbNvL7ifsLfMw6 ==
sumber
deflate
bahasa tersebut, karena ini hanya terlihat seperti string base64Brainf ***,
656652605 byteLoop di awal memulai rekaman
Kemudian sisa kode mengeluarkan karakter-karakter tersebut.
(-47 bytes terima kasih kepada orthoplex)
sumber
T-SQL, 244 byte
Golf:
Tidak Disatukan:
Cobalah secara online versi ungolfed
sumber