Adam West meninggal, dan saya ingin menghormati ingatannya di sini di PPCG, meskipun saya ragu dia tahu keberadaan kita. Walaupun ada banyak, banyak hal berbeda yang diketahui oleh pria ini, tidak ada yang lebih menonjol daripada perannya sebagai batman asli . Saya akan selalu ingat ayah tiri saya masih menonton Batman dan Robin sekolah tua sampai hari ini. Tantangan ini sifatnya sederhana, sama sekali tidak sejalan dengan lelaki rumit yang bernama Adam West. Namun, itu yang terbaik yang bisa saya dapatkan, karena ini adalah gambar paling ikonik dari karier pria itu.
Saya ingin memposting ini sebelumnya, tetapi saya sedang menunggu seseorang untuk datang dengan sesuatu yang lebih baik.
Keluarkan yang berikut (dengan atau tanpa spasi / baris baru):
* *
**** * * ****
**** ******* ****
****** ******* ******
********* ********* *********
***********************************************
*************************************************
*************************************************
*************************************************
***********************************************
***** ********************* *****
**** *** ***** *** ****
** * *** * **
Ini adalah kode-golf , byte-count terendah akan menang.
sumber
Jawaban:
Jelly , 44 byte
Cobalah online!
Bagaimana itu bekerja
Ini adalah numerik literal. Semua karakter diganti dengan indeks berbasis 1 mereka di halaman kode Jelly hasilnya diinterpretasikan sebagai bilangan bulat basis-250, menghasilkan
Selanjutnya,
b25
konversikan bilangan bulat itu ke basis 25 dano99
ganti 0 dengan 99 , menghasilkanJx$
mengganti basis- j ke -25 digit n dengan n salinan j , menghasilkanSekarang,
ị⁾ *
indeks ke dalam pasangan karakter. Pengindeksan adalah berbasis 1 dan modular, sehingga angka ganjil diganti dengan spasi, bahkan angka dengan tanda bintang. Ini menghasilkans25
potong hasilnya menjadi potongan dengan panjang 25 . Jika kita menulis setiap potongan pada barisnya sendiri, kita dapatThe bounce atom
ŒB
palindromizes setiap potongan dengan menambahkan salinan terbalik tanpa karakter pertama, menghasilkanAkhirnya,
Y
perkenalkan linefeeds yang sebenarnya.sumber
“QƤḣọḲ£¿ẆịµñẒṢƊ¬ƒỤ2ỴÐ,ịṁ&Ḅ<ḋsḳn.⁷ṛḃṡ⁾6bḋeṁ’ṃ⁾ *s25ŒBY
cukup pendek pada 53 byte ...Wordfuck ,
57612686 byteSaya kira menggunakan namanya sebagai kode sumber mendapat kehormatan bagi Adam West.
Cobalah online! (Transfungsi brainfuck)
Adam West bernyanyi (terima kasih @carusocomputing)
sumber
Python,
530529528524 bytesumber
B.pop(0)
sedikit mengganggu. Mengapa tidak membalikB
sehingga Anda dapat menggunakan yang jauh lebih efisien (dan lebih pendek)B.pop()
? Thepop(0)
harus memindahkan semua elemen daftar tersisa turun satu slot. Tentu, itu terjadi pada kecepatan C, tetapi masih kurang efisien daripada muncul dari ujung string.POP
,BIFF
,POW
,OOF
membuat saya memuntahkan apa yang saya minum di monitor saya. Terima kasih lol. +1.JavaScript (ES6),
148146 byteDemo
Tampilkan cuplikan kode
sumber
Python,
149142 byte7 byte disimpan berkat @ PM2Ring
sumber
x=''.join(s*int(k,36)for s,k in zip(' *'*3,l))
MATL ,
6159 byteCobalah online!
Bagaimana itu bekerja
Ini menggunakan teknik standar berikut:
1
hingga11
, sehingga urutan panjang run dikompresi oleh konversi basis , dari basis11
ke basis94
(karakter ASCII yang dapat dicetak kecuali kutipan tunggal, yang perlu melarikan diri).sumber
[1:12 20 24 99]
, yang membuat kompresi lebih sulit. Upaya terbaik saya adalah 60 byteY|
,? Saya tidak cukup tahu MATL atm untuk menguji apakah itu benar-benar lebih pendek ...[1:24 99]
saya menghapus satu byte . Jika saya menggunakan[0:24]
(basis 25), saya tidak tahu bagaimana mengubahnya0
menjadi99
beberapa byteY|
tidak bekerja di MATL / Oktaf seperti di Jelly / Python. Dalam yang terakhir,0 or 99
menghasilkan 99 ...05AB1E , 47 byte
Cobalah online!
sumber
replace 99 trick
darinya (disimpan 4 byte melalui jalan lurus ke depan). Masih mencari cara yang lebih baik..∞
alih-alih€û»
(mirror secara implisit bergabung dengan daftar pada baris baru terlebih dahulu di versi lawas, sebelum menerapkan mirror). Saya juga sudah mencoba menggunakan₂в
bukan25в
, tapi sayangnya integer dikompresi kemudian 1 byte lagi juga, sehingga tidak menyimpan sesuatu:•2Ø°×á[1∊Œ)’˜Àå<тIÞ‡p5ÉQ•₂в
.vim,
168156 byteIni mengasumsikan lingkungan Unix, untuk
rev
. Saya menggunakan pengkodean (hitungan, karakter) yang cukup mudah, dengan N dan A menambahkan adan
*
masing - masing, dan B melakukan penyalinan dan membalikkan.Dalam file aktual, entri yang diurung digantikan oleh byte literal yang diwakilinya.
<C-v>
adalah 0x16,<ESC>
adalah 0x1b, dan<CR>
0x0d.Cobalah online
sumber
:nm N a <C-v><esc>
dan:nm A a*<C-v><esc>
<C-v>
dalam file daripada itu, jadi saya menggunakan metode bundaran sehingga saya bisa mengujinya{ cat foo.vim; echo ':wq'; } | vim out.txt
. Saya tidak yakin mengapa tidak terpikir oleh saya untuk mencoba<C-v><C-v>
kemarin.-v
flag memungkinkan Anda menggunakan deskripsi kunci vim (seperti<C-v>
dan yang lainnya)<NL>
bukan<NEWLINE>
?Arang ,
69545248 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Sunting: Berkat @ ASCII saja, menyimpan 4 byte dengan beralih dari bendera yang terpisah ke pengulangan indeks,
7 byte dengan menggunakan karakter (tidak terdokumentasi?)Dan 4 byte lebih lanjut dengan menggunakan alfabet menggunakan pengodean panjang run. Menyimpan 2 byte lebih lanjut karena⸿
,AtIndex
secara otomatis mengambil modulo. Menyimpan 4 byte lebih lanjut karenaMap
secara otomatis membuat variabel indeks. Penjelasan:Bagian luar
Map
mengembalikan array.Print
menangani ini dengan mencetak setiap elemen pada baris sendiri, sehingga menghindari harus secara manualJoin
mereka dengan\n
.String mengkodekan semua setengah baris dari output. Huruf bergantian merujuk pada jumlah
*
s dan spasi (a=0
digunakan untuk menangani baris yang dimulai dengan spasi). Ruang adalah pilihan pembatas yang nyaman, tetapi juga ternyata kompres dengan baik (x juga kompres hingga keseluruhan 55 byte). Setiap baris diproses secara terpisah. (Catatan: deverbosifier gagal menghapus pemisah antara string terkompresi dan tidak terkompresi, jika tidak kode akan memiliki,
untuk keterbacaan.)Ulangi setiap huruf, meluas ke angka
*
atau spasi yang sesuai. Variabelm
adalah indeks loop dalam untuk iniMap
, sambill
memegang surat itu. Hasilnya kemudianJoin
diedit menjadi string tunggal menggunakan string kosong yang telah ditentukanw
.Setelah semua baris dicetak, mencerminkan semuanya ke kiri, tumpang tindih kolom tengah.
Saya mencoba menangani baris baru, spasi, dan bintang-bintang semuanya dalam satu lingkaran tetapi sebenarnya butuh dua byte lagi dengan cara ini:
sumber
Clojure,
833437 byteHampir secara definisi Clojure tidak akan pernah memenangkan hadiah untuk singkatnya, tetapi ketika saya melihat ke depan SETIAP MINGGU MINGGU ke episode TWO (count 'em - TWO ) dari Batman (waktu-Bat yang sama, saluran-Bat yang sama!) Sudah jelas bahwa ada tidak ada waktu untuk kalah!
Cepat, Robin - ke Bat-REPL !!!
Versi tidak golf:
RIP Adam West. Tidak peduli betapa konyolnya pertunjukkan itu, kami yang masih anak-anak memberi hormat kepada Anda.
sumber
C (gcc) , 191 byte
Cobalah online!
sumber
Berbagai solusi, semuanya menggunakan Run Length Encoding, dengan berbagai teknik untuk menyandikan data RLE.
Python 3,
125121 byteVersi ini menggunakan
bytes
string untuk menyimpan data.Membiarkan
s
menjadi string bintang atau spasi. Kemudiann
pengkodean bytes
diberikan olehPython 2,
133126 byteVersi ini menggunakan kode alfabet. Nilai huruf menentukan panjang string output, huruf huruf menentukan apakah itu terdiri dari spasi atau bintang.
Solusi Python 2 133 byte asli saya.
Versi ini menggunakan string dengan panjang nol sehingga dapat dengan mudah berganti-ganti antara string bintang dan spasi.
Hanya untuk bersenang-senang, ini adalah one-liner menggunakan kode alfabet.
Python 2, 148 byte
Untuk lebih asyik lagi, inilah pola dalam Conway's Game of Life yang menghasilkan versi logo Batman. Saya harus menggandakan setiap baris untuk menjaga rasio aspek kurang lebih sama dengan versi teks. Pola ini tidak benar-benar menghitung logo (meskipun adalah mungkin untuk melakukan perhitungan dalam Kehidupan - itu Turing-lengkap), itu hanya replay dari loop memori, jadi saya kira saya tidak bisa posting sebagai entri kode golf (meskipun Saya memang membuatnya menggunakan skrip Python yang saya tulis beberapa tahun yang lalu). ;)
Ini dikodekan dalam format RLE yang cukup standar yang dapat dimuat oleh kebanyakan mesin Life. Jika Anda tidak memiliki program GoL (mis. Golly ), Anda dapat melihatnya beraksi online dengan mesin Life online ini , yang dapat mengimpor file Life RLE. Berikut adalah versi PNG dari pola Hidup itu , beberapa program Life (termasuk Golly) dapat memuat pola Kehidupan dari PNG dan berbagai format file gambar lainnya.
sumber
T-SQL,
283 276222 byteMenerapkan kompresi GZIP dari string batman asli, melalui metode yang diposting di sini . Ini hanya berfungsi di SQL 2016 dan yang lebih baru.
Untuk versi SQL sebelumnya, gunakan metode saya sebelumnya ( 276 byte ):
Pada dasarnya saya secara manual menyandikan string raksasa yang menentukan apa yang akan dicetak berikutnya, menggunakan metode berikut:
#7
digantikan oleh+REPLICATE('*',7)
$4
digantikan oleh+SPACE(4)
&
digantikan oleh+CHAR(13)
Setelah penggantian, string karakter penuh 958 tampak seperti (dengan jeda baris di setiap baris dalam simbol Batman:
Yang dijalankan sebagai SQL dinamis, menghasilkan output berikut:
sumber
PHP , 137 byte
Cobalah online!
PHP , 177 byte
Cobalah online!
PHP , 179 byte
Cobalah online!
sumber
Java,
296214 byteGolf:
Tidak Disatukan:
sumber
";1I1074:151:4054<7<4036<7<6029999901_10a10a10a01_0257E570447345437407271636172"
untuk data, danfor(char a:x){a=(int)a-48; [...]
pada dasarnya menambahkan 48 ke masing-masing angka dan mengubahnya menjadi setara dengan ascii char mereka. Saya percaya ini akan menghemat 70-80 byte. Juga saya percaya hardcoding data ke dalam lamba akan mengurangi byte juga.boolean b=false;
dapatboolean b=1<0
, atau bahkan lebih baik, Anda dapat menggunakanint
dan juga menggabungkan deklarasi untuki
pada baris yang sama;).i
dalam for for loop saya pikir Anda dapat menggunakanfor(int i=0;i++<a-48;)
sebagaifor
-head.Bubblegum , 75
xxd dump:
Cobalah online .
sumber
Coffeescript (282 Bytes)
Penjelasan (menggunakan plain-ol ES6)
sumber
V , 102 byte
Cobalah online!
Hexdump:
Ini menggunakan pengkodean run-length untuk menghasilkan setengah batman berikut:
Dan kemudian membalikkan dan menduplikasi setiap baris.
sumber
Python 2 , 134 byte
Cobalah online!
Run-length mengkodekan setiap baris dari setengah kiri di dasar 36. Mirror untuk membuat garis penuh, yang dicetak. Spasi utama tidak dikodekan; sebagai gantinya, setengah kiri diisi hingga panjang 25.
sumber
Mathematica 151 Bytes
Murah dan tidak kreatif. String hanya dari
Compress
perintah bawaan yang digunakan pada output yang diperlukan.Memperbarui:
Saya pikir saya bisa melakukan yang lebih baik dengan fungsi- fungsi
ImportString
\ built-inExportString
tetapi saya tidak bisa menyalin dan menempelkan string yang dihasilkan dariExportString
dengan benar. MisalnyaSaya tidak bisa menyalin output teks dari baris kedua untuk menggantikan
%
baris ketiga.sumber
Bash ,
407322 byteCobalah online!
benar-benar mengerikan, butuh lebih banyak waktu atau bantuan untuk golf itu. itu menghasilkan output dengan 0 dan 1 dan transliterasi pada akhirnya. Dikodekan dalam hexa digit jumlah 0 dan 1, berhati-hatilah untuk membuat angka 0 terakhir untuk dua baris pertama sebagai flag untuk menampilkan kolom tengah. Menggunakan cetakan untuk digit atau string ke output 0 dan 1. berpikir
%.$[0x${X}]C
pola dapat digunakan untuk golf itu.sumber
Python 3,
232197183164 byteNamun Jawaban Python Lain. Tidak ada kode kompresi yang membosankan. Kode kompresi yang menarik.
Saya menggunakan angka ajaib 35 karena dengan begitu, tidak ada karakter kontrol, spasi, atau hal-hal yang perlu diloloskan terjadi. Sedih karena saya harus memproses ruang dan bintang secara terpisah, itu membuat saya sedikit biaya.
Tidak Disatukan:
sumber
print
panggilan pada baris yang sama denganfor
. 2 Jika Anda menggunakanbytes
string, Anda dapat menyingkirkanord
panggilan - panggilan itu. 3 Anda dapat menggantinyarange
dengan melompati sepasang iterator. Berikut generator yang menggabungkan kedua ide-ide:((u-35)*" "+(v-35)*"*"for u,v in zip(*[iter(s)]*2))
. Perubahan itu akan menurunkan jumlah Anda menjadi 164.PowerShell, 305 byte,
307 byte,316 byteMungkin orang lain dapat membantu saya mempersingkat lebih jauh, meskipun saya tidak tahu bagaimana kecuali ada cara yang lebih ringkas untuk mendefinisikan akselerator tipe khusus.
Sunting: Versi singkat (terima kasih @root). String yang dikodekan (pengkodean pra base64) dapat dipangkas dengan delapan posisi array dan rentangnya dapat dikurangi. Tidak yakin mengapa StreamWriter memperkenalkan mengasapi ini ke dalam MemoryStream. Wawasan tentang perilaku yang mendasarinya akan dihargai.
Tidak Disatukan:
Kode kompresi:
sumber
[IO.StreamReader]::new(([IO.Compression.GZipStream]::new([IO.MemoryStream]::new(([Convert]::FromBase64String('H4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbuHBUsBqAgAA')),0,102),[IO.Compression.CompressionMode]::Decompress))).ReadToEnd()
$ms.ToArray()
keduanya adalah 0. Apakah perlu?('225','193','82','192','106','2','0','0')
,, dapat dihapus untuk dibuatH4sIAAAAAAAEAL1SOQ4AIAjbTfwDc///QFE8gKAJi53sNQASbYBuQC3rxfANLTBm1iaFB9JIx1Yo9Tzg7YfCBeRQS7Lwr5IfZW7Cb0VDe3I8q25TcXvrTsyXOLGTbg==
. Saya tidak mengerti dari mana mereka berasal.Perl 5, 168 byte
Perhatikan ruang trailing di ujung hanya baris pertama. Membutuhkan
-M5.01
, yang gratis.Mungkin bisa bermain golf sedikit lebih.
sumber
LaTeX, 314 byte
Versi ungolfed dengan penjelasan:
sumber
C # (.NET Core) ,
342 333 328 185175 byteCobalah online!
Banyak byte yang disimpan setelah mengubah pendekatan. Mengambil gambar sebagai array 2D, saya menghitung pengkodean RLE oleh file:
Indeks ganjil berarti
s dan bahkan indeks adalah
*
s. Lalu saya mengganti setiap angka untuk representasi ASCII yang dapat dicetak (mengambil karakter '#' sebagai 1), dan saya mendapat:Jadi algoritma hanya menghitung gambar dengan mendekompresi string ini dan menambahkan baris baru di tempat yang tepat.
sumber
l
ke variabel, gunakan saja dalam loop secara langsung..ToString(i, 2)
->.ToString(i,2)
Yaitu menghapus spasi.1e10
representasi desimal atau ilmiah ( ) untuk angka-angka itu? Tantangan ini sebenarnya sangat membantu di sini.PowerShell ,
129128 byteCobalah online!
Tidak Disatukan:
Keluaran:
Gagasan utama sangat sederhana
Pengodean Emblem:
Decoding (skrip ini):
Length
kaliBeberapa hal cerdas
½
kes*t
(73 tanda bintang, 0 spasi, 74 tanda bintang).Ekstra: Skrip untuk pengkodean Emblem
sumber
Mathematica, 271 byte
sumber
Braingolf ,
590580579577428423312 byte-111 byte karena LeakyNun adalah dewa golf
Cobalah online!
Braingolf tidak pandai seni ASCII, tetapi saya mencoba.
Tidak mungkin saya menjelaskan gugus ini ** k
sumber
/// ,
171166 byte5 byte disimpan karena saya menggunakan
\r\n
di sumbernya, lol.Cobalah online!
Dikompresi dengan menggunakan iterasi berturut-turut untuk mengganti substring "paling ekonomis" dengan satu karakter. Ini hampir optimal, meskipun salah satu dari dua hal ini dapat terjadi:
sumber