Pixel-art, episode 1: tampilkan Super Mario

47

itu sama!

Tugas hari ini sederhana: menulis sebuah program, atau fungsi yang menampilkan sprite Mario kecil yang menganggur, dari Super Mario Bros, di NES, dengan latar belakang biru.

Setiap jenis entri valid selama menampilkan 12 * 16 piksel tersebut di mana saja di layar / jendela / browser.

(EDIT: gambar yang ditampilkan dapat ditingkatkan jika bahasa Anda tidak dapat melakukan pixel art. Anda juga dapat menampilkan seni ASCII atau HTML art, tetapi menggunakan warna yang tepat.)

Gambar (diperbesar 400%):

Anda harus menggunakan warna berikut:

  • biru: # 6B8CFF
  • merah: # B13425
  • hijau / coklat: # 6A6B04
  • oranye: # E39D25

Program terpendek (dalam jumlah karakter) menang!

Celah standar berlaku (terutama, tidak ada koneksi jaringan yang diizinkan), tetapi hardcoding dan menampilkan file gambar dalam program Anda diizinkan. (entri yang menggunakan trik ini akan diberi peringkat secara terpisah)

Kita mulai!


Papan Peringkat Saat Ini

Jawaban terpendek hanya menggunakan kode:

Jawaban terpendek menggunakan beberapa jenis gambar hardcode:

xem
sumber
2
Juga, membuat file tidak diizinkan? Itu harus ditampilkan?
Martin Ender
1
Saya tidak melihat pola di gambar itu. Jadi semuanya berujung pada kompresi terbaik yang dapat digunakan dalam suatu bahasa.
Pengoptimal
20
Nitpicking: Itu Mario, bukan Super Mario.
Dennis
5
Gagasan yang menyenangkan ... Inilah gagasan untuk tantangan sekuel: Ambil gambar Mario (Format apa saja) dan ubah menjadi gambar Luigi!
Zibbobz
3
Bisakah kita membuat program piet yang mirip dengannya?
Conor O'Brien

Jawaban:

36

HTML / JS, 206 158 153 102


102

Trik yang digunakan: simpan file GIF terkompresi sebagai file HTML, dan tambahkan <img src = #> di akhir

Berkat entri ini: https://codegolf.stackexchange.com/a/39926/10732 oleh @NiettheDarkAbsol

GIF87a  ¡ kŒÿã%jk±4%,       6„‡héj„Af-ÕdÎy\%    …R˜0”ŒÈJ­³I©±²û“ú=ª$±p%i¸•¤ <img src=#>

Demo: http://meuziere.free.fr/mario/gif.html


Versi yang lebih lama:

153

Trik yang digunakan: simpan file PNG terkompresi sebagai file HTML, dan tambahkan <img src = #> di akhir

‰PNG


IHDR         _v”   PLTEjkkŒÿ±4%ã%ó’V   IIDAT×c[ʵj%C€ÍUŸ?|ìíœÿ02„ÿÿÊÐÊàÐÄÈÀ°ŠáÓë~†«ö3üZµž!jÚR‡P x( s6ïåÇ<img src=#>


158

Trik yang digunakan: mengatur dataURI terpangkas dari PNG terkompresi sebagai SRC dari tag IMG dan mengemas semuanya dalam Unicode chars.


Jalankan itu di konsol JS Anda:

document.write(unescape(escape('🁩𫑧𘁳𬡣👤𨑴𨐺𪑭𨑧𩐻𨡡𬱥𝠴𛁩𥡂𣱒𭰰𢱇𩱯𠑁𠑁𣡓𥑨𡑕𩱁𠑁𠑷𠑁𠑁𤑁𩱍𠑁𠑂𩡄𜱡𥑁𠑁𠑄𡡂𣑖𡑖𬑡𭱒𬡪𤀫𮁎𠱘𪡮𤱘𮡫𩱨𥱁𠑁𠑓𥑬𡑑𥡑𢐱𜡍𢑗𮁘𢱅𣁖𬑊𥑏𠑺𥡕𡱮𮠹𛱇𦁺𬰷𤡭𨰯𮡁𮑨𤀯𛱹𪁄𤑅𣑲𩰰𣑔𢑷𣁃𢱧𩑈𥀶𜰶𡱦𝡶𜡍𛱸𨑴𦠴𪁡𭁰𤱂𫱤𤑯𢁧𫱁𭰾').replace(/uD./g,'')))


206

Dibongkar (206b):

<img src=data:image;base64,iVBORw0KGgoAAAANSUhEUgAAAAwAAAAQAgMAAABfD3aUAAAADFBMVEVqawRrjP+xNCXjnSXzkghWAAAASUlEQVQI12MIWxXKELVqJUOAzVUGnz9/GXzs7Rmc/zAyhP//yhDQEMrg0MTIwLCKgeHT636Gf6v2M/xatZ4hatpSBodQoHgoAw>

Demo


Alat yang digunakan:

xem
sumber
Anda tidak perlu tag. Cukup gunakan uri data chrome dan masukkan di bilah url Anda. 200 karakter
Pengoptimal
Hm ... Saya menganggap bahwa dataURI bukan "program" yang valid. Tapi kamu benar. Semua browser memungkinkan dataURI di bilah alamat.
xem
Sekarang Anda menggunakan celah sendiri sebagai OP;). Anda menurunkan semua pekerjaan ke kompresi eksternal / internal format GIF. Jika itu keren, kita semua harus mencari format gambar yang tidak jelas dengan tingkat kompresi terbaik sekarang, dan saya bisa menghemat banyak pekerjaan untuk menulis kompresi saya sendiri. ;)
Martin Ender
2
@xem Nah, tantangan Anda, panggilan Anda. Tapi sepertinya agak sia-sia jika kita sekarang hanya mencari format file yang ada paling terkompresi. ;)
Martin Ender
1
Tampaknya tautan rawgit sudah mati.
Addison Crump
27

Mathematica, 412 292 252 212 163 148 143 141 karakter

f=FromDigits[ToCharacterCode@#,2^16]~IntegerDigits~#2&;Image@Partition[f["넴╫賿橫ӣ鴥",256][[3#+1;;3#+3]]/256&/@"吀啐^A媾핮﻽溿뽫ﺩ埿⩕樨ꦪª⿼?ཐᐅ橕ꦪ喪"~f~4,12]

Ini menggunakan notasi tanda kuret ^Auntuk karakter kontrol pada titik kode 1. Dalam Mathematica, saya benar-benar dapat menanamkan karakter secara harfiah, meskipun itu mengarah pada segala macam keburukan ketika menyalin sesuatu di sekitar. Bagaimanapun, yang di atas adalah 2 karakter lebih pendek dari versi saya sebelumnya, dan saya mendapatkannya karakter dari menggunakan basis-4 bukan basis-5 untuk menyandikan indeks palet warna. Saat ini saya tidak dapat diganggu untuk memperbaiki penjelasan dan tangkapan layar di bawah, jadi saya akan meninggalkan Anda di sini dengan versi dasar-5 dari jawaban saya:


f=FromDigits[ToCharacterCode@#,2^16]~IntegerDigits~#2&;Image@Partition[f["넴╫賿橫ӣ鴥",256][[3#-2;;3#]]/256&/@"ᯱ曎㌟뱮䚻륏Σ襺ﺦ您汜豈塘ᙉ雬儥衰ꐰꃾ纔ㆯ쭴뫋澖ᕿ蓉"~f~5,12]

Saya menyandikan piksel dalam karakter Unicode (ya untuk menghitung berdasarkan karakter!).

Berikut ini tampilannya di Mathematica:

masukkan deskripsi gambar di sini

Begini cara kerjanya:

Pertama kita mendefinisikan fungsi fyang mengubah string Unicode (dilewatkan sebagai argumen pertama #) menjadi daftar bilangan bulat. Pertama kita mendapatkan kode karakter. Itu dapat ditafsirkan sebagai digit nomor 65536 basis. Dan kemudian kita mengonversi angka itu ke pangkalan lain, diteruskan sebagai argumen kedua #2.

Sekarang mari kita lakukan untuk string Unicode yang lebih panjang. ToCharacterCodemenghasilkan daftar ini:

{7153, 26318, 13087, 48238, 18107, 47439, 931, 35194, 62191, 65190, \
 24744, 57782, 27740, 35912, 22616, 5705, 38636, 20773, 34928, 42032, \
 41214, 32404, 12719, 52084, 47819, 28566, 5503, 33993}

Memperlakukan ini sebagai basis 65536:

7933607912575313477287527915733176998797205587959732019781370103381...
4831246938139171755469819519515972565671101475553962564506286523593

Dan mengkonversi ke basis 5:

{2, 2, 2, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 1, 1, 1, 1, 1, 1, 1, 1, 1, \
 2, 2, 2, 3, 3, 3, 4, 4, 3, 4, 2, 2, 2, 2, 3, 4, 3, 4, 4, 4, 3, 4, 4, \
 4, 2, 2, 3, 4, 3, 3, 4, 4, 4, 3, 4, 4, 4, 2, 3, 3, 4, 4, 4, 4, 3, 3, \
 3, 3, 2, 2, 2, 2, 4, 4, 4, 4, 4, 4, 4, 2, 2, 2, 2, 3, 3, 1, 3, 3, 3, \
 2, 2, 2, 2, 2, 3, 3, 3, 1, 3, 3, 1, 3, 3, 3, 2, 3, 3, 3, 3, 1, 1, 1, \
 1, 3, 3, 3, 3, 4, 4, 3, 1, 4, 1, 1, 4, 1, 3, 4, 4, 4, 4, 4, 1, 1, 1, \
 1, 1, 1, 4, 4, 4, 4, 4, 1, 1, 1, 1, 1, 1, 1, 1, 4, 4, 2, 2, 1, 1, 1, \
 2, 2, 1, 1, 1, 2, 2, 2, 3, 3, 3, 2, 2, 2, 2, 3, 3, 3, 2, 3, 3, 3, 3, \
 2, 2, 2, 2, 3, 3, 3, 3}

Itu adalah indeks warna piksel, dalam urutan biru, merah, hijau, oranye. Kami menggunakannya untuk mengindeks ke dalam daftar angka, yang merupakan palet warna.

Sekarang untuk palet warna. Itu "넴╫賿橫ӣ鴥". Kami menggunakan indeks di atas untuk memilih string yang benar. Kemudian kita menerapkan fungsi kita lagi, tetapi menggunakan basis 256. Itu menghasilkan daftar 12 bilangan bulat:

{177, 52, 37, 107, 140, 255, 106, 107, 4, 227, 157, 37}

Kami menggunakan ;;pengindeksan rentang untuk mengeluarkan potongan yang relevan untuk warna saat ini.

Terakhir, kami hanya gunakan Partitionuntuk membaginya menjadi baris 12dan mengumpankannya Image. Voa!

Sunting: Dengan pengemasan Unicode, RLE sudah tidak layak lagi. Menghapusnya menyimpan 50 karakter.

Sunting: Tentu saja, tanpa RLE, tidak perlu lagi pergi ke pangkalan 16.

Sunting: Dan sementara kita berada di sana, mengapa tidak Unicode-pack palet warna juga? (Saya punya firasat bahwa saya dapat menyimpan sedikit lebih banyak dengan membuat seluruh palet warna menjadi satu string dan menggunakan Partitionjuga di sana. Saya akan mencobanya nanti.)

Sunting: Ya, itu mencukur 5 byte lainnya.

Martin Ender
sumber
1
maukah Anda menambahkan tangkapan layar hasilnya? (bukan karena saya tidak percaya kode Anda, tetapi ingin tahu tentang bagaimana itu ditampilkan: di jendela? browser? lain?)
xem
@xem Akan lakukan. Ini adalah lingkungan REPL yang mampu menghasilkan dan menghasilkan grafis.
Martin Ender
Tidak yakin, tetapi apakah Anda mencerminkan bagian bawah gambar?
Pengoptimal
1
@Optimizer Tidak, saya ragu saya bisa melakukan itu dalam karakter yang lebih sedikit daripada yang saya hemat.
Martin Ender
Ketika saya melihat dalam dokumentasi Mathematica saya tidak melihat penggunaan pada tilde tetapi tampaknya di sini Anda menggunakannya untuk memberi makan hasil dari satu fungsi ke yang lain dan kemudian menerapkan argumen tambahan untuk fungsi kedua itu (IntegerDigits)? Juga, palet warna: melihat gambar, tampaknya hanya ada empat warna, tetapi palet warna Anda tampaknya mencakup lebih dari itu: {177, 52, 37, 107, 140, 255, 106, 107, 4, 227 , 157, 37}. Melihat dokumentasi untuk Gambar, sepertinya ia mencetak skala abu-abu kecuali opsi tambahan seperti ColorScale -> RGB disediakan.
CryptoCommander
20

Jawa: 398 377

void s(){new java.awt.Frame(){public void paint(java.awt.Graphics g){int i=0,x,m[]={12226,44085194,467839834,0x5abea55a,0x5bbd5d50,0x5ffe9540,0x5ffe9540,0x5aee5d50,531408218,334277466,333492170,0xc02fc2},c[]={7048447,0xB13425,6974212,0xE39D25};for(setSize(99,99);i<192;g.setColor(new java.awt.Color(c[m[x]&3])),m[x]/=4,g.drawLine(x+40,60-i%16,x+40,60-i++%16))x=i/16;}}.show();}

Cukup gambar sprite dengan membongkar int untuk setiap kolom. Ditampilkan dalam program lengkap:

class P{
    public static void main(String[]a){
        new P().s();
    }

    void s(){
        new java.awt.Frame(){           
            public void paint(java.awt.Graphics g){
                int i=0,x,m[]={12226,44085194,467839834,0x5abea55a,0x5bbd5d50,0x5ffe9540,
                               0x5ffe9540,0x5aee5d50,531408218,334277466,333492170,0xc02fc2},
                          c[]={7048447,0xB13425,6974212,0xE39D25};
                for(setSize(99,99);i<192;
                    g.setColor(new java.awt.Color(c[m[x]&3])),m[x]/=4,
                    g.drawLine(x+40,60-i%16,x+40,60-i++%16)
                )x=i/16;
            }
        }.show();
    }
}

Tangkapan layar wajib:

ini aku Mario

Geobit
sumber
1
Anda dapat menyimpan 9 byte dengan menggunakan import java.awt.*.
Kevin Cruijssen
15

Kode Mesin x86, 102 byte

Cara kerjanya: Gambar disimpan sebagai gambar 2-bit menggunakan palet. Setiap baris gambar disimpan sebagai 3 byte, diikuti oleh 1 byte palet warna. Ini memungkinkan data untuk dimuat sebagai DWORD tunggal. Dua belas piksel dihasilkan dengan menutupi 2 bit nilai terendah, menuliskannya ke memori video, dan kemudian menggeser kanan seluruh nilai dua bit. Setelah piksel untuk baris dikeluarkan, byte palet ditulis ke palet VGA. Ketika gambar selesai menggambar, program memasuki loop tak terbatas.

Kode perakitan untuk menghasilkan biner:

org 100h
mov al,13h
int 10h
les ax,[bx]

mov si,image_data
draw:
add di,320-12
lodsd
xchg eax,ebx
mov cl,12
row:
mov ax,bx
and al,3
stosb
shr ebx,2
loop row
xchg ax,bx
mov dx,0x3c9
out dx,al
test al,al
jnz draw

image_data: db 21,0,85,0xb1/4, \
5,0,64,0x34/4,            \
165,190,87,0x25/4,        \
185,191,127,0x6b/4,       \
185,254,254,0x8c/4,       \
233,191,106,0xff/4,       \
213,255,95,0x6a/4,        \
165,168,85,0x6b/4,        \
169,40,106,0x4/4,         \
170,0,170,0xe3/4,         \
47,195,248,0x9d/4,        \
63,0,252,0x25/4,          \
15,0,240,111,             \
5,20,80,111,              \
169,85,106,111,           \  
170,85,170 

Base-64 yang disandikan biner, simpan sebagai Mario.com untuk menjalankannya: sBPNEMQHvigBgcc0AWatZpOxDInYJAOqZsHrAuL1k7rJA + 6EwHXiwxUAVSwFAEANpb5XCbm / fxq5 / vgjpdjpdjfpdjf

Output sampel: masukkan deskripsi gambar di sini

Sir_Lagsalot
sumber
10

GIF - 93 byte

Hardcoding gambar tampaknya baik-baik saja sekarang, jadi ... ya? : D

GIF87a  ¡ kŒÿã%jk±4%,       6„‡héj„Af-ÕdÎy\%    …R˜0”ŒÈJ­³I©±²û“ú=ª$±p%i¸•¤  ;

Seperti yang terlihat di Notepad ++

tangkapan layar dalam NP ++

Seperti PHP - 131 byte

<? header("Content-Type:image/gif");?>GIF87a  ¡ kŒÿã%jk±4%,       6„‡héj„Af-ÕdÎy\%  …R˜0”ŒÈJ­³I©±²û“ú=ª$±p%i¸•¤  ;
Niet the Dark Absol
sumber
1
dapatkah Anda mengunggah gif Anda di suatu tempat (ctrlv.in misalnya)? Saya ingin menggunakannya dalam entri saya bukan PNG :)
xem
@xem adamhaskell.net/img/mario.gif
Niet the Dark Absol
@ NiettheDarkAbsol Saya tidak yakin bagaimana Anda menghitung ukuran itu, tapi saya menghitung 150 byte. Terlepas dari itu, penilaian berdasarkan karakter, dan tampaknya 114 karakter.
Martin Ender
2
Yup, potongan PHP baik-baik saja untuk saya (bahkan jika Anda bisa menghapus 2 byte terakhir). Tetapi cuplikan mentah gif bukan program.
xem
1
@ xem: Jika peramban dianggap sebagai "juru bahasa" untuk HTML / javascript / etc, dan mengumpankannya potongan gif mentah melalui mekanisme yang sama menghasilkan hasil yang diinginkan ... perbedaannya menjadi kecil
Mooing Duck
10

Bash + ImageMagick: 350 331 321 karakter

(Palette tanpa malu-malu dicuri dari Martin Büttner 's jawaban .)

p=(B13425 6B8CFF 6A6B04 E39D25)
for c in 21 0 85 5 0 64 165 190 87 1{85,91,27,85} 254{,} 233 191 106 213 255 95 165 168 85 169 40 106 170 0 170 47 195 248 63 0 252 15 0 240 5 20 80 169 85 106 170 85 170;{
for j in 0 2 4 6;{
d+=(-fill \#${p[c>>j&3]} -draw point\ $[i%12],$[i++/12])
}
}
convert -size 12x16 xc: "${d[@]}" x:

Output sampel:

Mario

Untuk memeriksanya dengan mudah menambahkan -scale 120untuk convertparameter 's untuk mendapatkan versi 10x skala:

Mario diskalakan 10

manatwork
sumber
2
s/185 191 127 185 254 254/1{85,91,27,85} 254{,}/; s/do/{/; s/done/}/
grawity
Doh. Aku bahkan upvoted DigitalTrauma terkait 's ujung , tapi aku selalu lupa bahwa {.. }. Terima kasih, kegembiraan.
manatwork
8

Octo / XO-Chip , 70 byte

Octo adalah bahasa assembly tingkat tinggi yang mengkompilasi menjadi instruksi bytecode untuk mesin virtual CHIP-8 . Octo menyediakan beberapa ekstensi khusus yang disebut "XO-Chip" ke bytecode CHIP-8 dasar, termasuk kemampuan untuk menggambar bitmap 4-warna melalui bitplanes yang overlay.

Bytes yang dikompilasi adalah sebagai berikut:

0xA2 0x08 0xF3 0x01 0xD0 0x00 0x1F 0x00 0x3F 0xC0 0x39 0x00 0x51 0x00 0x58 0x80
0x21 0xE0 0x00 0x00 0x3F 0x00 0x7F 0xE0 0xFF 0xF0 0x36 0xC0 0x1F 0x80 0x3F 0xC0
0x39 0xC0 0x70 0xE0 0xF0 0xF0 0x00 0x00 0x00 0x00 0x3F 0x80 0x7F 0xE0 0x7F 0xF0
0x3F 0xE0 0x1F 0xC0 0x37 0x00 0x76 0xE0 0xF0 0xF0 0xE9 0x70 0xE0 0x70 0xC0 0x30
0x00 0x00 0x70 0xE0 0xF0 0xF0

mario

Jalankan di sini di browser Anda: http://johnearnest.github.io/Octo/index.html?gist=33aa37d4717a425ccd4f

Mungkin lebih mencerahkan untuk melihat bahasa assembly Octo yang menghasilkan bytecode itu:

: main
    i := mario
    plane 3
    sprite v0 v0 0

: mario
    0x1F 0x00 0x3F 0xC0 0x39 0x00 0x51 0x00 
    0x58 0x80 0x21 0xE0 0x00 0x00 0x3F 0x00 
    0x7F 0xE0 0xFF 0xF0 0x36 0xC0 0x1F 0x80 
    0x3F 0xC0 0x39 0xC0 0x70 0xE0 0xF0 0xF0 
    0x00 0x00 0x00 0x00 0x3F 0x80 0x7F 0xE0 
    0x7F 0xF0 0x3F 0xE0 0x1F 0xC0 0x37 0x00 
    0x76 0xE0 0xF0 0xF0 0xE9 0x70 0xE0 0x70 
    0xC0 0x30 0x00 0x00 0x70 0xE0 0xF0 0xF0 

Program utama adalah tiga instruksi dua byte. Atur register indeks memori ike awal segmen data, pilih bidang gambar 3 (3 adalah bitmask; ini menunjukkan Anda ingin menggambar dalam mode 4 warna dengan kedua bitplanes) lalu menggambar sprite pada posisi x dan y yang diberikan oleh daftar v0(diinisialisasi ke nol). 0 akhir memberikan ukuran sprite, yang dalam set instruksi SuperChip dan XO-Chip akan menggambar sprite 16x16. Dalam mode 4 warna, bitmap untuk bidang pertama segera diikuti oleh bitmap untuk bidang kedua.

Untuk melihat bagaimana pesawat bekerja, pertimbangkan program yang dimodifikasi ini yang menggulirkan satu pesawat ke kanan setelah menggambar mario:

mario2

: main
    i := mario
    plane 3
    sprite v0 v0 0
    plane 2
    scroll-right
    scroll-right
    scroll-right
    scroll-right

: mario
    0x1F 0x00 0x3F 0xC0 0x39 0x00 0x51 0x00 
    0x58 0x80 0x21 0xE0 0x00 0x00 0x3F 0x00 
    0x7F 0xE0 0xFF 0xF0 0x36 0xC0 0x1F 0x80 
    0x3F 0xC0 0x39 0xC0 0x70 0xE0 0xF0 0xF0 
    0x00 0x00 0x00 0x00 0x3F 0x80 0x7F 0xE0 
    0x7F 0xF0 0x3F 0xE0 0x1F 0xC0 0x37 0x00 
    0x76 0xE0 0xF0 0xF0 0xE9 0x70 0xE0 0x70 
    0xC0 0x30 0x00 0x00 0x70 0xE0 0xF0 0xF0 

Jika Anda menikmati ini, Anda mungkin menyukai salah satu solusi saya yang ditulis dengan Octo. Sebenarnya ada kemacetan permainan yang terjadi untuk bulan Oktober berdasarkan pada alat ini.

JohnE
sumber
6

Groovy 417 386

Menyenangkan sekali, tetapi dengan jumlah char yang mengerikan. GroovyFX dibutuhkan

m=[b:'6B8CFF',r:'B13425',g:'6A6B04',o:'E39D25'];groovyx.javafx.GroovyFX.start{stage(visible:!0){scene(width:60,height:80){flowPane{"3b5r4b2b9r1b2b3g2o1g1o3b1b1g1o1g3o1g3o1b1b1g1o2g3o1g3o1b2g4o4g1b3b7o2b2b2g1r3g4b1b3g1r2g1r3g1b4g4r4g2o1g1r1o2r1o1r1g2o3o6r3o2o8r2o2b3r2b3r2b1b3g4b3g1b4g4b4g".toList().collate 2 each{l->(l[0]as int).times{rectangle(width:5,height:5,fill:"#"+m[l[1]])}}}}}}

ungolfed:

m=[b:'6B8CFF',
   r:'B13425',
   g:'6A6B04',
   o:'E39D25']           

s=5

groovyx.javafx.GroovyFX.start {bd->
  stage(visible: !0) {
    scene(width:s*12, height:s*16) {
      flowPane {
        "3b5r4b 2b9r1b 2b3g2o1g1o3b 1b1g1o1g3o1g3o1b 1b1g1o2g3o1g3o 1b2g4o4g1b 3b7o2b 2b2g1r3g4b 1b3g1r2g1r3g1b 4g4r4g 2o1g1r1o2r1o1r1g2o 3o6r3o 2o8r2o 2b3r2b3r2b 1b3g4b3g1b 4g4b4g"
          .replaceAll(" ", "")
          .toList()
          .collate(2) 
          .each { l->
            t=l[0] as int
            cr=m[l[1]]
            t.times {
              rectangle(width:s, height:s, fill:"#"+cr) 
            }
          }
      }
    }
  }
}

masukkan deskripsi gambar di sini

Will Lp
sumber
grep()bukannyatoList()
cfrick
5

HTML / JS, 427 408 264 256 239 226 karakter

Obfuscatweet, 271 270 264 256 239 226 karakter

Menggunakan obfuscatweet, berhasil mempersingkat ini menjadi <250: D

document.write(unescape(escape('🁳𨱲𪑰𭀾𨰽𦰢𝡂𞁃𡡆𘠬𘡂𜐳𝀲𝐢𛀢𝡁𝡂𜀴𘠬𘡅𜰹𡀲𝐢𧐻𨐽𙰰𜐵𝐰𜀰𝐵𝐵𝀰𠑂𡑃𜀲𡑆𡑆𠰲𡑂𡡂𡠲𠡆𡑁𞀰𜱆𡡆𜀰𠐶𠐰𜀲𠐶𞑁𞁁𠐵𝑁𠑆𞑄𝰶𡡆𡀵𝐷𡡆𝐵𝐵𡠰𝐴𜐵𜀲𠐰𜁁𞁁𠐰𜁁𠐧𞱷𪑴𪀨𩁯𨱵𫑥𫡴𚑦𫱲𚁩🐰𞱩🀹𝠻𭱲𪑴𩐨𙰼𨡲🠧𚐩𮱨🐨𙰰𜀰𙰫𬁡𬡳𩑉𫡴𚁡𛡳𫁩𨱥𚁩𛁩𚰽𝠩𛀱𝠩𛡴𫱓𭁲𪑮𩰨𝀩𚐮𬱬𪑣𩐨𛐱𜠩𞱦𫱲𚁪🐰𞱪🀱𜠻𭱲𪑴𩐨𙰼𬡰𘁳𭁹𫁥🐢𬁡𩁤𪑮𩰺𜐠𞀻𨡡𨱫𩱲𫱵𫡤𞠣𙰫𨱛𪁛𪠫𚱝𧐫𙰢🠼𛱲𬀾𙰩𚐻𯐼𛱳𨱲𪑰𭀾').replace(/uD./g,'')))

Kode di bawah ini terdiri dari apa.

Trik yang digunakan: gambar yang dikonversi ke string String string warna, dikonversi ini menjadi String heksadesimal. Indeks base 4 menunjukkan warna (0 = biru, 1 = RED, dll.) CSS dengan inline p digunakan karena div membutuhkan konten untuk berkembang (juga p lebih pendek). Karena CSS perlu diawali dengan huruf, 'A' diawali sebelum tag CSS.

Padding dari CSS memberikan piksel. Tak satu pun dari ini menggunakan karakter Unicode, yang saya tidak terlalu akrab dengan anyways, meskipun mungkin masuk sub-300 dalam hal ini. Keuntungan relatif menggunakan padding adalah Anda dapat, seperti dalam kasus ini, meledakkan gambar dengan ukuran berapa pun yang Anda inginkan untuk setiap piksel. Saya telah menggunakan 9 piksel, tetapi jika Anda menghabiskan karakter tambahan, Anda bisa mendapatkan hingga 99 piksel per piksel yang direpresentasikan.


CSS, 127 119 118 114 100 13 0 karakter

Beralih dari puntuk rpmenghilangkan kebutuhan display:inline, biaya +1 char, -15! karakter!

Menghapus semua warna dan memasukkannya ke dalam array di JS -87 chars. Lalu saya baru saja menghapus semua css

JS, 300 289 280 275 329 325 karakter

c=["6B8CFF","B13425","6A6B04","E39D25"];a='0155000555540ABEC02EFEFC2EBFBF2BFEA803FFF00A6A002A69A8AA55AAF9D76FFD557FF5555F0541502A00A8AA00AA';with(document)for(i=0;i<96;write('<br>')){h=('000'+parseInt(a.slice(i,i+=6),16).toString(4)).slice(-12);for(j=0;j<12;write('<rp style="padding:1 8;background:#'+c[h[j++]]+'"></rp>'));}

Saya mencoba untuk memotong sebanyak yang saya bisa dari JS polos ini memproses string hex, tetapi mengingat ini adalah percobaan pertama saya, ini adalah seberapa jauh saya hanya menggunakan apa yang saya tahu. Penulisan HTML telah dipersingkat oleh fungsi yang menambahkan tag, dan kelas menggunakan nilai basis 4 untuk menentukan warna yang akan ditampilkan.

Menggunakan pemendekan tambahan, mengganti karakter dengan tanda kurung [], dan menghapus kelas A0 dan menetapkan biru sebagai warna default untuk p, menyimpan 10 karakter tambahan. Biaya tambahan untuk menggunakan rptag diimbangi oleh kerugian besar dalam CSS.

Tambahan offset dari menghapus loop pad sementara hanya menambahkan '000' untuk use case dan mengiris -12 darinya.

Menambahkan JS tambahan untuk warna, lalu letakkan padding di sana. Melihat bug dengan padding yang membutuhkan 2 karakter tambahan untuk memperbaikinya. Memadatkan banyak loop

File HTML, 430 429 419 399 366 342 karakter

Demo

<script>c=["6B8CFF","B13425","6A6B04","E39D25"];a='0155000555540ABEC02EFEFC2EBFBF2BFEA803FFF00A6A002A69A8AA55AAF9D76FFD557FF5555F0541502A00A8AA00AA';with(document)for(i=0;i<96;write('<br>')){h=('000'+parseInt(a.slice(i,i+=6),16).toString(4)).slice(-12);for(j=0;j<12;write('<rp style="padding:1 8;background:#'+c[h[j++]]+'"></rp>'));}</script>
Kompas
sumber
Bagus! Saya menyarankan Anda untuk menghapus semua jeda baris dalam kode Anda, dan memberikan tautan untuk demo ( c99.nl ). Sebagai bonus, Anda dapat mengemas entri Anda dalam karakter Unicode menggunakan xem.github.io/obfuscatweet . Itu akan meningkatkan skor Anda.
xem
juga, Anda dapat menghapus tag & lt; html>, letakkan tag & lt; style> di bagian akhir, dan hapus / style dan trailing "}" dari aturan CSS terakhir.
xem
@ xem OK, saya memotong semua garis dan menekan semuanya. Saya akan mencoba dan mencari cara optimal untuk membagi JS untuk obfuscatweet.
Kompas
1
obfuscatweet menerima kode js apa pun (sehingga Anda dapat menempatkan karakter 289 js di sana), atau kode html apa pun (sehingga Anda dapat menyalin file html Anda di sini). Output obfuscatweet dapat dieksekusi di konsol browser atau dalam file HTML menggunakan tag meta charset kanan.
xem
psst, Anda lupa menghapus "}" terakhir dari bagian CSS. Ini bekerja tanpanya.
xem
5

MATLAB, 194 193 byte

Kode:

imagesc(dec2base(base2dec(reshape('5FVQL5VVVT50A4L4HA594GAHA45A015DAL551G2L41GO101VO0A7FMAANVVAAVVVQ5VLVL40L8100L80',5,[])',32),4)-48);colormap([106 107 4;107 140 255;227 157 37;177 52 37]/255)

Dan hasilnya:

Mario

Pada dasarnya saya mengonversi gambar Mario sehingga setiap piksel adalah angka 2 bit. Saya kemudian menyandikannya di basis 32 yang merupakan string yang ditunjukkan dalam kode. String ini pertama kali dibentuk ulang menjadi 5 x 16 (setiap baris (12px) dari angka 2bit dikodekan ke dalam basis 32), kemudian dikonversi kembali menjadi basis 10. Hasilnya dikonversi sekali lagi, kali ini menjadi basis 4 menghasilkan array 12x16 dari 2 angka bit. Angka-angka ini diplot menggunakan imagesc(). Kemudian warna ditugaskan menggunakan colormap()peta warna khusus dari nilai hex yang diperlukan.

Yang mengherankan, sepertiga dari jumlah byte yang digunakan hanya untuk mendapatkan MATLAB untuk mengatur warna yang benar setelah diplot. Kode warna memiliki jumlah byte yang hampir sama dengan seluruh string base32 !.

Tanpa memperbaiki warna (menghapus colormap()panggilan), itu adalah 135 byte, dan ini adalah output untuk peta warna default pada MATLAB R2013a:

Mario, tidak ada pemetaan

Tom Carpenter
sumber
4

JavaScript / CSS / HTML 446 430 407 353 328 316

Saya bermain golf sebanyak yang saya bisa dan berakhir dengan beberapa HTML / JS kotor, tapi apa pun ... itu berfungsi.

Sunting : Ini dia ... saya sudah selesai.

Sunting Serius dilakukan saat ini.

JavaScript

for(i=0;i<192;)document.body.innerHTML+=(i%12?"":"<br>")+"<font color=#"+["6B8CFF","B13425","6A6B04","E39D25"]["000111110000001111111110002223323000023233323330023223332333022333322220000333333300002212220000022212212220222211112222332131131233333111111333331111111133001110011100022200002220222200002222"[i++]]+">█"

JSFiddle

SomeShinyObject
sumber
JSFiddle tertaut tidak mengandung versi yang sama seperti yang diposting di sini dan tidak berfungsi (setidaknya tidak untuk saya di Firefox). Ngomong-ngomong, untuk keluaran yang lebih bagus *{line-height:1}akan membantu.
manatwork
@manatwork Coba lagi.
SomeShinyObject
Bagus. Tapi mengapa div itu? Hanya untuk rasa ingin tahu saya, saya mencoba versi ECMAScript. Punya 372 karakter: jsfiddle.net/768h7brb
manatwork
karena <div></div>lebih pendek dari document.createElement('div'). Dan JSFiddle tidak sukadocument.write
SomeShinyObject
1
Membalikkan kondisi operator ternary untuk menyingkirkan sisi kanan perbandingan ini: i%12?"":"<br>".
manatwork
4

Matlab - 449/332 305 byte

kompresi parsial + Menggunakan simetri gambar yang lebih rendah:

a=[0,0];b=[2,2];c=[3,3];d=[a,0];f=[b,2];g=[c,3];h=[b,b];i=[a,a];k=[1,1];l=[0,f,1,2;h,k;c,2,1,3,1;g,k,1;c,k,k;a,k,1,0;0,f,a;h,a];imshow(uint8([d,k,1,k,i;a,k,k,k,k,1,0;a,f,c,2,3,d;0,2,3,2,g,2,g,0;0,2,3,b,g,2,g;0,b,c,c,h,0;d,g,g,3,a;a,b,1,f,i;[l fliplr(l)]]),[107 140 255;177 52 37;106 107 4;227 157 37]/255)

- Versi terkompresi sebagian (332 byte):

a=[0,0]
b=[2,2]
c=[3,3]
d=[a,0]
e=[1,1,1]
f=[b,2]
g=[c,3]
h=[b,b]
i=[a,a]
imshow(uint8([d,e,1,1,i;a,e,e,e,0;a,f,c,2,3,d;0,2,3,2,g,2,g,0;0,2,3,b,g,2,g;0,b,c,c,h,0;d,g,g,3,a;a,b,1,f,i;0,f,1,b,1,f,0;h,e,1,h;c,2,1,3,1,1,3,1,2,c;g,e,e,g;c,e,e,1,1,c;a,e,a,e,a;0,b,2,i,f,0;h,i,h]),[107 140 255;177 52 37;106 107 4;227 157 37]/255)

Versi sepenuhnya tidak terkompresi (449 byte):

imshow(uint8([0,0,0,1,1,1,1,1,0,0,0,0;0,0,1,1,1,1,1,1,1,1,1,0;0,0,2,2,2,3,3,2,3,0,0,0;0,2,3,2,3,3,3,2,3,3,3,0;0,2,3,2,2,3,3,3,2,3,3,3;0,2,2,3,3,3,3,2,2,2,2,0;0,0,0,3,3,3,3,3,3,3,0,0;0,0,2,2,1,2,2,2,0,0,0,0;0,2,2,2,1,2,2,1,2,2,2,0;2,2,2,2,1,1,1,1,2,2,2,2;3,3,2,1,3,1,1,3,1,2,3,3;3,3,3,1,1,1,1,1,1,3,3,3;3,3,1,1,1,1,1,1,1,1,3,3;0,0,1,1,1,0,0,1,1,1,0,0;0,2,2,2,0,0,0,0,2,2,2,0;2,2,2,2,0,0,0,0,2,2,2,2]),[107 140 255;177 52 37;106 107 4;227 157 37]/255)

Output dalam kedua kasus (diperbesar di layar jelas, yang asli adalah 12x16pix):
MarioMagnified

Hoki
sumber
Hei aku bertanya-tanya apakah ada yang akan mengeksploitasi simetri entah bagaimana. Saya tidak dapat menemukan cara dengan metode yang akhirnya saya ikuti.
Bumpy
4

C, 4999 byte

Ini benar-benar tidak dapat bersaing dengan beberapa jawaban di sini, tapi saya pikir saya akan memberikan jawaban C mencoba. Kode adalah satu garis panjang tunggal, jadi di sini adalah tautan pastebin. Jika Anda lebih suka, ini adalah pengkodean base64 dari kode yang di-gzip:

H4sICAzFGFYCA21hcmlvLmMA3Zc9DsIwDIXv0qndUqchkXwUurAgdYiFEEyIu4NYaZBI7PzNT3Lsz4mf408bjdPjct3odh6HVeujdgg4K4vzohCM8esdjHOpkrVoALUtIrBX8y1R04DKNCGZmTp85CVdAHifYuxO3mElIlju6xaRICOgCo4pD64PoiTzHnkZcHYnRhAYcEEpFznxB1mXP4TdS/KeVGYPZbmVaQHlnRVZFi65OkhoGodq+RHrby4xsTj8i6RmapXrPvfa0Q8ZWZY1/UPbSiC7Z2bYA7r0zla57Xmo8sOEzxdNYIXFhxMAAA==

Perlu dicatat bahwa itu tidak memerlukan perpustakaan eksternal untuk dijalankan.

Memerlukan terminal xterm, Konsole, atau GNOME, karena ia menggunakan ekspansi RGB ke kode pelolosan warna ANSI untuk menampilkan warna yang benar (ANSI tidak mendefinisikan oranye). Untuk alasan yang jelas, ideone tidak akan berfungsi. Itu dapat dijalankan di Windows di bawah Cygwin, yang menggunakan xterm (sebenarnya, itulah cara saya mengujinya). MSYS mungkin bekerja; Saya tidak yakin.

Output pada mesin saya (xterm):

ini aku, mario!

Mego
sumber
2
-1 bukan kelipatan 10
Conor O'Brien
Maaf, itu mengacu pada skor
Conor O'Brien
4

Excel VBA, 310 307 295 Bytes

Fungsi Anonymous VBE Immediates Window yang menampilkan Mario ke objek Activesheet di sel A1:L16

o=2465251:Cells.RowHeight=48:a[A1:L16],-29589:a[C4:K5,D3:I7,J7,L5,A11:L13],o:a[C3:E3,H3:H4,B4:B6,C6,D4:D5,E5,I5,H6:K6,C8:H8,B9:K10,A10:L10,C11,J11,B15:D16,A16,I15:K16,L16],289642:a[D1:H1,C2:K2,E8:E10,F10:H10,H9,D11:I13,C13:E14,H13:J14],2438321:a[E11,H11],o

SubRutin Pembantu a

Sub a(r,c):r.Interior.Color=c:End Sub

Versi Tidak Serigala

Public Sub b()
    o = 2465251
    Cells.RowHeight = 48
    a [A1:L16], -29589
    a [C4:K5,D3:I7,J7,L5,A11:L13], o
    a [C3:E3,H3:H4,B4:B6,C6,D4:D5,E5,I5,H6:K6,C8:H8,B9:K10,A10:L10,C11,J11,B15:D16,A16,I15:K16,L16], 289642
    a [D1:H1,C2:K2,E8:E10,F10:H10,H9,D11:I13,C13:E14,H13:J14], 2438321
    a [E11,H11], o
End Sub


Private Sub a(ByRef r As Range, ByVal c As Integer)
    r.Interior.Color = c
End Sub

-3 byte untuk menghapus spasi -12 byte untuk menggunakan [...]notasi lebih dari Range(...)notasi; berubah dari warna hex ke warna int

Keluaran

Itu sama

Taylor Scott
sumber
3

Bash 346

bash murni dengan VT100 seperti urutan sekuensi (maaf tidak ada oranye di palet itu)

C="  "
B="\033[44m$C"
R="\033[41m$C"
G="\033[42m$C"
O="\033[43m$C"
N="\033[00m\n"
A="BBBRRRRRBBBBNBBRRRRRRRRRBNBBGGGOOGOBBBNBGOGOOOGOOOBNBGOGGOOOGOOONBGGOOOOGGGGBNBBBOOOOOOOBBNBBGGRGGGBBBBNBGGGRGGRGGGBNGGGGRRRRGGGGNOOGRORRORGOONOOORRRRRROOONOORRRRRRRROONBBRRRBBRRRBBNBGGGBBBBGGGBNGGGGBBBBGGGGN"
while read -n1 v
do
  printf "${!v}"
done <<< "$A"
pengguna2485710
sumber
1
Anda bisa menguranginya dengan menggunakan array untuk palet daripada karakter yang terpisah. Karena mendeklarasikan array asosiatif panjang, lebih baik rekode ulang ke bilangan bulat. Versi 295 karakter dari kode Anda: pastebin.com/d0LW0HM1
manatwork
3

Pyth, 83 byte

Penafian: Ini bukan kandidat yang menang, karena beberapa fitur bahasa dibuat setelah memposting pertanyaan.

.wc16@Lc4CM"±4%kÿjkã%"jC"T\0UP\0Z¾Õnþýn¿¿kþ©WÿõZ*Uj(©ª\0ªøÃ/ü\0?ð\0PjU©ªUª"4

Berikut ini hex-dump:

00000000   2E 77 63 31  36 40 4C 63  34 43 4D 22  B1 34 25 6B  .wc16@Lc4CM".4%k
00000010   8C FF 6A 6B  04 E3 9D 25  22 6A 43 22  54 5C 30 55  ..jk...%"jC"T\0U
00000020   50 5C 30 01  5A BE D5 6E  FE FD 6E BF  BF 6B FE A9  P\0.Z..n..n..k..
00000030   57 FF F5 5A  2A 55 6A 28  A9 AA 5C 30  AA F8 C3 2F  W..Z*Uj(..\0.../
00000040   FC 5C 30 3F  F0 5C 30 0F  50 14 05 6A  55 A9 AA 55  .\0?.\0.P..jU..U
00000050   AA 22 34                                            ."4

Anda juga dapat mengunduh program di sini dan menjalankannya

python3 pyth.py mario.pyth

Ini menciptakan file o.png:

Mario

Penjelasan:

Hanya ada 4 warna berbeda, oleh karena itu saya hanya perlu 2 bit untuk menyimpan warna setiap piksel.

.wc16@Lc4CM"..."jC"..."4
                  "..."   the colors of the image, 2 bit per pixel
                 C        convert these bytes to a number
                j      4  and convert it to base 4 (extracting the colors)
           "..."          the hexcodes of the 4 colors (3 byte per color)
         CM               convert each byte into its number
       c4                 split into 4 lists
     @L                   for each pixel, pick the correct list of color-list
  c16                     split into 16 rows
.w                        save it as "o.png"
Jakube
sumber
Apakah ini berfungsi dalam versi terakhir Pyth sebelum tantangan diposting?
lirtosiast
@ThomasKwa Ya, lupa. Saya akan mengedit info.
Jakube
2

Memproses 2 - 359 karakter

Saya melihat tantangan ini dan langsung memikirkan fungsi pixel []. Saya berharap ini akan lebih pendek tetapi saya masih cukup senang dengan hasilnya mengingat ini adalah upaya pertama saya di kode golf.

int i,l;i=l=0;size(12,16);loadPixels();for(char c:"3b5r6b9r3b3g2o1g1o4b1g1o1g3o1g3o2b1g1o2g3o1g3o1b2g4o4g4b7o4b2g1r3g5b3g1r2g1r3g1b4g4r4g2o1g1r1o2r1o1r1g5o6r5o8r2o2b3r2b3r3b3g4b3g1b4g4b4g".toCharArray()){while(l>0){pixels[i]=#6B8CFF;if(c=='r')pixels[i]=#B13425;if(c=='g')pixels[i]=#6A6B04;if(c=='o')pixels[i]=#E39D25;i++;l--;}if(c<58){l=c-48;}}updatePixels();

ungolfed:

int i,l;i=l=0;
size(12,16);
loadPixels();
for(char c:"3b5r6b9r3b3g2o1g1o4b1g1o1g3o1g3o2b1g1o2g3o1g3o1b2g4o4g4b7o4b2g1r3g5b3g1r2g1r3g1b4g4r4g2o1g1r1o2r1o1r1g5o6r5o8r2o2b3r2b3r3b3g4b3g1b4g4b4g".toCharArray())
{
    while(l>0)
    {
        pixels[i]=#6B8CFF;
        if(c=='r')pixels[i]=#B13425;
        if(c=='g')pixels[i]=#6A6B04;
        if(c=='o')pixels[i]=#E39D25;
        i++;
        l--;
    }
    if(c<58){l=c-48;}
}
updatePixels();

Anda dapat mengunduh pemrosesan di sini

bubalou
sumber
2

Javascript 515

str='';
"000111110000|001111111110|002223323000|023233323330|023223332333|022333322220|000333333300|002212220000|022212212220|222211112222|332131131233|333111111333|331111111133|001110011100|022200002220|222200002222"
.split("|").forEach(function(ov, ok) {
str += '<div>'
    ov.split("").forEach(function(iv, ik) {
    str += '<div style="width:1px;height:1px;background-color:' + ['#6B8CFF','#B13425','#6A6B04','#E39D25'][iv] + ';display:inline-block"></div>';
    });
    str+= '</div>';
});
document.write(str);

baru saja bekerja, masih harus masuk dan golf itu

Profesor Allman
sumber
1
Anda dapat mengganti divs yang membentuk baris dengan tag yang sebaris secara default. Saya belum mengujinya, tetapi menggunakan aharus berhasil. Anda juga dapat menggunakan backgroundbukan background-color.
NinjaBearMonkey
2

Perl - Ungolfed 927

Saya harus bermain golf ini nanti. Pertama kali mencoba Image::Magick.

#!/usr/local/bin/perl
use Image::Magick;
use strict;
use warnings;

my @p = (
[0,0,0,1,1,1,1,1,0,0,0,0],
[0,0,1,1,1,1,1,1,1,1,1,0],
[0,0,2,2,2,3,3,2,3,0,0,0],
[0,2,3,2,3,3,3,2,3,3,3,0],
[0,2,3,2,2,3,3,3,2,3,3,3],
[0,2,2,3,3,3,3,2,2,2,2,0],
[0,0,0,3,3,3,3,3,3,3,0,0],
[0,0,2,2,1,2,2,2,0,0,0,0],
[0,2,2,2,1,2,2,1,2,2,2,0],
[2,2,2,2,1,1,1,1,2,2,2,2],
[3,3,2,1,3,1,1,3,1,2,3,3],
[3,3,3,1,1,1,1,1,1,3,3,3],
[3,3,1,1,1,1,1,1,1,1,3,3],
[0,0,1,1,1,0,0,1,1,1,0,0],
[0,2,2,2,0,0,0,0,2,2,2,0],
[2,2,2,2,0,0,0,0,2,2,2,2],
);
my $image = Image::Magick->new;
$image->Set(size=>'12x16');
$image->ReadImage('canvas:white');
for my $i (0..$#p) {
    for (0..(@{$p[$i]} - 1)) {
        my $color;
        $color = ($p[$i][$_] < 1 ? "#6B8CFF" : $p[$i][$_] < 2 ? "#B13425" : $p[$i][$_] < 3 ? "#6A6B04" : "#E39D25");
        print "$i : $_ : $color \n";
       $image->Set("pixel[$_,$i]"=> $color);
    }
}
#$image->Write("mario.png");
$image->Display();

Saya yakin kami punya banyak, tapi ini milik saya: Mario!

hmatt1
sumber
2

Cetak Bash: 179 158 Bytes

Terinspirasi oleh jawaban pengguna2485710 .

Anda harus menyetel terminal Anda untuk mencocokkan warna dengan tepat.

eval "$(base64 -d<<</AD/8AAD9Wm/2amr2Wpq1qlX/qqv9RX/1RRXVQBVpIIaqAAqoAAK8DwP1f9XVf9V|xxd -b -c3 -g0|cut -c10-33|sed $'s/../\e[4$[2#&+1]m \e[0m/g;s/^/echo /')"
hpsMouse
sumber
ini yang saya lihat . apakah saya melakukan sesuatu yang salah?
ardnew
2
@ardnew: BSD base64 digunakan -Duntuk decode dan -duntuk debug .
Dennis
2

Tcl 298

package require base64
set d [base64::decode AVUABVVUCr7ALv78Lr+/K/6oA//wCmoAKmmoqlWq+ddv/VV/9VVfBUFQKgCoqgCq]
binary scan $d B* z
set i 0
foreach {a b} [split $z ""] {
if {$i % 12 == 0} {puts "\033\[0m"}
puts -nonewline "\033\[4[string map {00 4 01 1 10 2 11 3} $a$b];m  "
incr i
}
puts "\033\[0m"

Ini adalah 2 bit per piksel gambar dalam basis 64. Pixel dipetakan ke kode melarikan diri ansi.

masukkan deskripsi gambar di sini

wolfhammer
sumber
Tanpa mencoba, kode Anda tampaknya sedikit golf: tio.run/…
sergiol
2

JavaScript - 256 karakter (161 obfus-a-tweeted)

d=v=>{for(i=v&15;i--;)O.innerHTML+=`<i style="color:#${'6B8CFF6A6B04B13425E39D25'.substr(x%4*6,6)}">█</i>`+(++f%12?'':'<br>');x++},f=x=0,[..."fhilsswsssuss££cgÓdcddc¤g£stcucds³c¹cefefcc¤c§"].map(v=>(d(v=v.charCodeAt(0)-99),d(v>>4)))
<p id=O>

masukkan deskripsi gambar di sini

Metode:

  1. Menggunakan bitmasking, string 63x8-bit memberikan array nilai 126x4-bit yang terdiri dari angka dalam kisaran 0-9. (Frustasi ... menyelamatkan 63 karakter dengan menjadi 4-bit, tetapi menghabiskan 50 karakter membongkar kembali bit lol. Namun, 13 karakter adalah 13 karakter! :-)
  2. Keempat warna cat didaur ulang dalam urutan: B, G, R, O. Pada setiap iterasi, 0-9 div diberikan untuk warna saat ini (dengan satu garis putus setiap 12)

Untuk menentukan urutan optimal untuk siklus warna, saya menjalankan algoritma kompresi terhadap data mentah untuk masing-masing 24 permutasi [R, G, B, O] dan memilih yang menghasilkan output terpendek (126 yang terbaik, paling tidak optimal adalah sekitar 150-an)

ETA menemukan ini hanya setelah membaca jawaban lain menggunakan obfusca-tweet ...

eval(unescape(escape`𩀽𭠽🡻𩡯𬠨𪐽𭠦𜐵𞱩𛐭𞰩𣰮𪑮𫡥𬡈𥁍𣀫👠🁩𘁳𭁹𫁥🐢𨱯𫁯𬠺𘰤𮰧𝡂𞁃𡡆𝡁𝡂𜀴𠠱𜰴𜠵𡐳𞑄𜠵𙰮𬱵𨡳𭁲𚁸𙐴𚠶𛀶𚑽𘠾ﶈ�𛱩🡠𚰨𚰫𩠥𜐲🰧𙰺𙰼𨡲🠧𚐻𮀫𚱽𛁦👸🐰𛁛𛠮𛠢𩡨𪑬𬱳𭱳𬱳𭑳𬲣𸱣𩳓𩁣𩁤𨲤𩲣𬱴𨱵𨱤𬲳𨲹𨱥𩡥𩡣𨲤𨲧𘡝𛡭𨑰𚁶🐾𚁤𚁶👶𛡣𪁡𬡃𫱤𩑁𭀨𜀩𛐹𞐩𛁤𚁶🠾𝀩𚐩𒠼𬀠`.replace(/u../g,'')))

Ide selanjutnya. - Cobalah rentang data 3-bit 0-6, dengan 7,8,9 yang langka, masing-masing mendapatkan 4 ekstra: 60000N. - periksa permutasi siklus warna di semua arah dan kecepatan selain secara horizontal satu piksel pada satu waktu. - Cobalah beberapa render pass agar warna dapat berlapis.

Bumpy
sumber
Saya baru sadar bahwa ini adalah tentang karakter bukan bye, jadi mungkin bisa membagi dua data lagi menggunakan karakter 16-bit.
Bumpy
1

Javascript, 253 240 238 236

Sumber obfuscatweet ed - 253 240 238 236

document.write(unescape(escape('🁳𨱲𪑰𭀾𘠵𫐲𫰹𫑨𜰰𞐷𫁯𩰹𜐰𜑰𪰹𮡰𝱵𞑶𭁸𭰹𜱱𭐸𞐸𝡷𭰹𭑯𩱫𞐳𨱳𬁨𞐶𪡭𪡥𞐶𬁬𫡵𞐶𭠷𮐲𞑭𝐸𜀹𭁨𮡯𞐳𨡥𨰵𘠮𬱰𫁩𭀨𞐩𛡦𫱲𡑡𨱨𚁦𭑮𨱴𪑯𫠨𨰩𮱤👤𫱣𭑭𩑮𭀻𨰽𬁡𬡳𩑉𫡴𚁣𛀳𝠩𛡴𫱓𭁲𪑮𩰨𝀩𞱷𪁩𫁥𚁣𛡬𩑮𩱴𪀼𜐲𚑣🐢𜀢𚱣𞱣𛡳𬁬𪑴𚀢𘠩𛡦𫱲𡑡𨱨𚁦𭑮𨱴𪑯𫠨𭠩𮱤𛡷𬡩𭁥𚀢🁰𘁳𭁹𫁥🐧𩁩𬱰𫁡𮐺𪑮𫁩𫡥𞱰𨑤𩁩𫡧𞠹𞱢𨑣𪱧𬡯𭑮𩀺𘰢𚱛𘠶𠠸𠱆𡠢𛀢𝡁𝡂𜀴𘠬𘡅𜰹𡀲𝐢𛀢𠠱𜰴𜠵𘡝𦰫𭡝𚰢𙰾🀯𬀾𘠩𯐩𞱤𛡷𬡩𭁥𚀢🁢𬠾𘠩𯐩🀯𬱣𬡩𬁴🠠').replace(/uD./g,'')))

Tidak terobosan - 395 370 365 361

<script>"5m2o9mh3097log9101pk9zp7u9vtxw93qu8986ww9uogk93csph96jmje96plnu96v7y29m5809thzo93bec5".split(9).forEach(function(c){d=document;c=parseInt(c,36).toString(4);while(c.length<12)c="0"+c;c.split("").forEach(function(v){d.write("<p style='display:inline;padding:9;background:#"+["6B8CFF","6A6B04","E39D25","B13425"][+v]+"'></p>")});d.write("<br>")})</script>

Terima kasih kepada @compass untuk <p>trik tag, dan @xem untuk 2 (5) karakter.

Demo

Itu mengkonversi data dari basis 36, dan mengkonversi ke basis 4.

Camilan
sumber
Saya tidak dapat mengujinya, tetapi saya tidak berpikir padding:9Melakukan apa pun tanpa unit setelahnya. Anda juga bisa menggunakan elemen huruf tunggal seperti aatau qyang secara implisit sebaris, alih-alih p.
NinjaBearMonkey
@ hsl Saya telah memperbarui tautan demo, dan itu berfungsi dengan baik setidaknya Chrome, Firefox, dan Safari saya di Mac.
Snack
-2 byte: ganti "|" oleh 9 dalam string dan split. Juga, Anda menggunakan 3 kali "document.write", Anda harus meletakkannya di var untuk menyimpan, seperti, 24b)
xem
@ xem Terima kasih telah mengingatkan saya trik membagi angka. Dan karena kita tidak dapat menetapkan document.writeke variabel (kita harus menggunakan document.write.bind(document)), yang terbaik adalah menugaskan documentke variabel.
Snack
atau, Anda dapat melakukan ini pertama kali: (d = dokumen) [w = "tulis"] (/ * hal-hal yang harus ditulis * /), dan lakukan saja setelah: d [w] ("Hai")
xem
1

JavaScript ES6 (HTML + CSS), 199 307 3195 3630

Menggunakan Obfusc-a-tweet :

eval(unescape(escape('𬰽𦱝𒠧𜰹𮡲𬀳𝁤𩡬𜱪𩱴𜐴𨡷𭐵𝁢𪱣𩠴𝱰𜡨𜱦𫁹𭀳𪑮𪀱𝀵𝀸𞐶𫑳𫱡𞑰𩡥𝰹𭁺𝑲𞑤𝁢𜰳𝁨𩁸𝀵𩀴𞐶𫠹𩱱𙰮𫑡𭁣𪀨𛰮𮰵𯐯𩰩𛡦𫱲𡑡𨱨𚀨𫠬𪐩🐾𦰮𛠮𬁡𬡳𩑉𫡴𚁮𛀳𝠩𛡴𫱓𭁲𪑮𩰨𝀩𧐮𩡯𬡅𨑣𪀨𚁭𛁪𚐽🡳𛡰𭑳𪀨𪠫𜐫𙱰𮀠𙰫𚀫𪐫𜐩𚰧𬁸𘀣𙰫𦰧𠠱𜰴𜠵𙰬𙰶𠠸𠱆𡠧𛀧𝡁𝡂𜀴𙰬𙱅𜰹𡀲𝐧𧑛𚱭𧐩𚐩𒡤𫱣𭑭𩑮𭀮𭱲𪑴𩐨𙰼𬀠𬱴𮑬𩐽𘡷𪑤𭁨𞠱𬁸𞱨𩑩𩱨𭀺𜑰𮀻𨡯𮀭𬱨𨑤𫱷𞠧𚱳𚰧𘠧𚐠').replace(/uD./g,'')))

Ini menampilkan sprite tanpa menggunakan gambar atau banyak elemen; itu hanya menyalahgunakan box-shadowproperti CSS untuk membuat setiap piksel. Cobalah di http://jsbin.com/pozohiyezo/ . Versi tanpa gangguan ini adalah 307 karakter :

s=[]
'39zrp34dfl3jgt14bwu54bkcf47p2h3flyt3inh1454896msoa9pfe79tz5r9d4b334hdx45d496n9gq'.match(/.{5}/g).some((n,i)=>[...parseInt(n,36).toString(4)].forEach((m,j)=>s.push(j+1+'px '+(+i+1)+'px #'+['B13425','6B8CFF','6A6B04','E39D25'][+m])))
document.write('<p style="width:1px;height:1px;box-shadow:'+s+'"')

Ini adalah versi HTML asli, vanilla polos. Lihat beraksi di http://jsfiddle.net/gfeLn1ey/1/ .

<p style="width:1px;height:1px;box-shadow:4px 1px 0 #B13425,5px 1px 0 #B13425,6px 1px 0 #B13425,7px 1px 0 #B13425,8px 1px 0 #B13425,12px 1px 0 #6B8CFF,3px 2px 0 #B13425,4px 2px 0 #B13425,5px 2px 0 #B13425,6px 2px 0 #B13425,7px 2px 0 #B13425,8px 2px 0 #B13425,9px 2px 0 #B13425,10px 2px 0 #B13425,11px 2px 0 #B13425,12px 2px 0 #6B8CFF,3px 3px 0 #6A6B04,4px 3px 0 #6A6B04,5px 3px 0 #6A6B04,6px 3px 0 #E39D25,7px 3px 0 #E39D25,8px 3px 0 #6A6B04,9px 3px 0 #E39D25,12px 3px 0 #6B8CFF,2px 4px 0 #6A6B04,3px 4px 0 #E39D25,4px 4px 0 #6A6B04,5px 4px 0 #E39D25,6px 4px 0 #E39D25,7px 4px 0 #E39D25,8px 4px 0 #6A6B04,9px 4px 0 #E39D25,10px 4px 0 #E39D25,11px 4px 0 #E39D25,12px 4px 0 #6B8CFF,2px 5px 0 #6A6B04,3px 5px 0 #E39D25,4px 5px 0 #6A6B04,5px 5px 0 #6A6B04,6px 5px 0 #E39D25,7px 5px 0 #E39D25,8px 5px 0 #E39D25,9px 5px 0 #6A6B04,10px 5px 0 #E39D25,11px 5px 0 #E39D25,12px 5px 0 #E39D25,2px 6px 0 #6A6B04,3px 6px 0 #6A6B04,4px 6px 0 #E39D25,5px 6px 0 #E39D25,6px 6px 0 #E39D25,7px 6px 0 #E39D25,8px 6px 0 #6A6B04,9px 6px 0 #6A6B04,10px 6px 0 #6A6B04,11px 6px 0 #6A6B04,12px 6px 0 #6B8CFF,4px 7px 0 #E39D25,5px 7px 0 #E39D25,6px 7px 0 #E39D25,7px 7px 0 #E39D25,8px 7px 0 #E39D25,9px 7px 0 #E39D25,10px 7px 0 #E39D25,12px 7px 0 #6B8CFF,3px 8px 0 #6A6B04,4px 8px 0 #6A6B04,5px 8px 0 #B13425,6px 8px 0 #6A6B04,7px 8px 0 #6A6B04,8px 8px 0 #6A6B04,12px 8px 0 #6B8CFF,2px 9px 0 #6A6B04,3px 9px 0 #6A6B04,4px 9px 0 #6A6B04,5px 9px 0 #B13425,6px 9px 0 #6A6B04,7px 9px 0 #6A6B04,8px 9px 0 #B13425,9px 9px 0 #6A6B04,10px 9px 0 #6A6B04,11px 9px 0 #6A6B04,12px 9px 0 #6B8CFF,1px 10px 0 #6A6B04,2px 10px 0 #6A6B04,3px 10px 0 #6A6B04,4px 10px 0 #6A6B04,5px 10px 0 #B13425,6px 10px 0 #B13425,7px 10px 0 #B13425,8px 10px 0 #B13425,9px 10px 0 #6A6B04,10px 10px 0 #6A6B04,11px 10px 0 #6A6B04,12px 10px 0 #6A6B04,1px 11px 0 #E39D25,2px 11px 0 #E39D25,3px 11px 0 #6A6B04,4px 11px 0 #B13425,5px 11px 0 #E39D25,6px 11px 0 #B13425,7px 11px 0 #B13425,8px 11px 0 #E39D25,9px 11px 0 #B13425,10px 11px 0 #6A6B04,11px 11px 0 #E39D25,12px 11px 0 #E39D25,1px 12px 0 #E39D25,2px 12px 0 #E39D25,3px 12px 0 #E39D25,4px 12px 0 #B13425,5px 12px 0 #B13425,6px 12px 0 #B13425,7px 12px 0 #B13425,8px 12px 0 #B13425,9px 12px 0 #B13425,10px 12px 0 #E39D25,11px 12px 0 #E39D25,12px 12px 0 #E39D25,1px 13px 0 #E39D25,2px 13px 0 #E39D25,3px 13px 0 #B13425,4px 13px 0 #B13425,5px 13px 0 #B13425,6px 13px 0 #B13425,7px 13px 0 #B13425,8px 13px 0 #B13425,9px 13px 0 #B13425,10px 13px 0 #B13425,11px 13px 0 #E39D25,12px 13px 0 #E39D25,1px 14px 0 #6B8CFF,2px 14px 0 #6B8CFF,3px 14px 0 #B13425,4px 14px 0 #B13425,5px 14px 0 #B13425,6px 14px 0 #6B8CFF,7px 14px 0 #6B8CFF,8px 14px 0 #B13425,9px 14px 0 #B13425,10px 14px 0 #B13425,11px 14px 0 #6B8CFF,12px 14px 0 #6B8CFF,1px 15px 0 #6B8CFF,2px 15px 0 #6A6B04,3px 15px 0 #6A6B04,4px 15px 0 #6A6B04,5px 15px 0 #6B8CFF,6px 15px 0 #6B8CFF,7px 15px 0 #6B8CFF,8px 15px 0 #6B8CFF,9px 15px 0 #6A6B04,10px 15px 0 #6A6B04,11px 15px 0 #6A6B04,12px 15px 0 #6B8CFF,1px 16px 0 #6A6B04,2px 16px 0 #6A6B04,3px 16px 0 #6A6B04,4px 16px 0 #6A6B04,5px 16px 0 #6B8CFF,6px 16px 0 #6B8CFF,7px 16px 0 #6B8CFF,8px 16px 0 #6B8CFF,9px 16px 0 #6A6B04,10px 16px 0 #6A6B04,11px 16px 0 #6A6B04,12px 16px 0 #6A6B04,6px 6px 0 5px #6B8CFF"
NinjaBearMonkey
sumber
TIL, Anda tidak dapat menutup <p tag :)
xem
kode ini dapat memiliki kompresi yang sangat baik pada alat seperti regpack. Berikut ini adalah contoh di 729b (JS digunakan untuk menulis HTML, meskipun): goo.gl/7fF7kx
xem
@ xem Saya sebenarnya tidak pernah mempertimbangkan untuk membuat kode dengan JS, tapi saya bisa membuatnya membeli jauh lebih pendek mengikuti pola kode.
NinjaBearMonkey
1

Javascript, 256 atau 245 252 atau 241

256

document.write("k6n56kcraqlaqasasjaqbsasibtdlstlb2cmc2b2cid5dra2q3q2au7u55rj4j4kclcidld".replace(/./g,function(x){return new Array((x=parseInt(x,36))&7).join("<li style=padding:4%;float:left;background:#"+['B13425','6A6B04','6B8CFF','E39D25'][x>>3]+">")}))

Sedih untuk menimpa 256, tetapi 245 dimungkinkan jika menggunakan karakter yang tidak dapat dicetak:

document.write(btoa(">§ç©­ª¥j¦¬jÈÚ©»²&ív[-½ÍÙÈåÚÚÚ­êÙ«»»køÉ\\Ù]").replace(/./g,function(x){return new Array((x=parseInt(x,36))&7).join("<li style=padding:4%;float:left;background:#"+["B13425","6A6B04","6B8CFF","E39D25"][x>>3]+">")}))

Ada beberapa masalah dengan mengirim solusi dengan karakter yang tidak dapat dicetak. Argumen btoaharus hasil atob("ij6n56kcraqlaqasasjaqbsasibtdlstlb2cmc2b2cid5dra2q3q2au7u55rj4j4kclcidld")dengan 1 simbol panjang ditambahkan untuk melarikan diri backslash.

Persingkat kedua solusi dengan 4 simbol: kita tidak perlu yang baru untuk pembuatan array.

252

document.write("k6n56kcraqlaqasasjaqbsasibtdlstlb2cmc2b2cid5dra2q3q2au7u55rj4j4kclcidld".replace(/./g,function(x){return Array((x=parseInt(x,36))&7).join("<li style=padding:4%;float:left;background:#"+['B13425','6A6B04','6B8CFF','E39D25'][x>>3]+">")}))

241

document.write(btoa("©ùêG+j©Z©«²6ªnƬ»]Ëeog&sför'yv¶¶«z¶jîîçãâ>$rVÚÙ]").replace(/./g,function(x){return Array((x=parseInt(x,36))&7).join("<li style=padding:4%;float:left;background:#"+['B13425','6A6B04','6B8CFF','E39D25'][x>>3]+">")}))

Tidak perlu melarikan diri dalam versi ini. The btoaargumen 's adalah hasil dariatob("k6n56kcraqlaqasasjaqbsasibtdlstlb2cmc2b2cid5dra2q3q2au7u55rj4j4kclbaidld")

Qwertiy
sumber
Saya perhatikan masalah yang tidak dapat dicetak pada ini dan tantangan terakhir saya juga. Saya pikir itu hanya karakter 8, 9 & 13 jika itu membantu (walaupun saya bisa dengan mudah keliru)
Bumpy
1

Perl, 266 260 257 249 245 byte

$_="444111114444441111111114442223323444423233323334423223332333422333322224444333333344442212224444422212212224222211112222332131131233333111111333331111111133441114411144422244442224222244442222";s/\d/\033[4$&m  /g;s/.{84}/$&\033[00m\n/g;print

Menggunakan pendekatan yang mirip dengan solusi bash user2485710 untuk menulis output gaya VT100. Keluarkan N eksplisit untuk baris baru dengan menyisipkan baris baru setiap 12 "vt100 piksel", 12 * 7 = 84.

steve
sumber
1

SmileBASIC, 147 136 karakter

P$="xxxxxxxx
FOR I=0TO 191C=ASC("xxxxxxxxxxxxxxxxxxxxxxxx"[I/8])>>I MOD 8*2AND 3GPSET I/16,15AND I,ASC(P$[C*2])<<16OR ASC(P$[C*2+1])NEXT

Output (terpotong): tangkapan layar

Saya mengganti semua karakter dalam string data dengan x's, di sini adalah kode karakter (dalam UCS-2):
P$(Palette): FF6B,8CFF,FFB1,3425,FF6A,6B04,FFE3,D925
Data gambar:0000,83F8,0A80,A3FA,8BE4,A5EA,BEA5,A55A,7EE5,0575,BFF5,0156,BFF5,0156,BBA5,0575,3AF4,A55A,3BC4,A5EA,0BC4,A3FA,0300,83F8

Palet disimpan dalam sebuah string, setiap warna (32 bit) disimpan dalam dua karakter (masing-masing 16 bit). Data gambar (2 bit per piksel) disimpan dalam string lain (8 piksel per karakter)
Untungnya, tantangannya dicetak dalam karakter, karena file ini secara signifikan lebih besar jika disimpan dalam UTF-8.

12Me21
sumber
1

05AB1E , 87 byte (Tidak bersaing)

•8,vkJíÝ1¢tt6,9XÂck$XSãõO©Ú"›qf®¸Ì#}„K0ÝCìxý}É~ð_áú•4BSvy•3«WKyÛòèz*Ðeb•16B6ôè'#ì})12ô»

Cobalah online!

Output:

#B13425 #B13425 #B13425 #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #B13425 #B13425 #B13425 #B13425
#B13425 #B13425 #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #B13425
#B13425 #B13425 #6A6B04 #6A6B04 #6A6B04 #E39D25 #E39D25 #6A6B04 #E39D25 #B13425 #B13425 #B13425
#B13425 #6A6B04 #E39D25 #6A6B04 #E39D25 #E39D25 #E39D25 #6A6B04 #E39D25 #E39D25 #E39D25 #B13425
#B13425 #6A6B04 #E39D25 #6A6B04 #6A6B04 #E39D25 #E39D25 #E39D25 #6A6B04 #E39D25 #E39D25 #E39D25
#B13425 #6A6B04 #6A6B04 #E39D25 #E39D25 #E39D25 #E39D25 #6A6B04 #6A6B04 #6A6B04 #6A6B04 #B13425
#B13425 #B13425 #B13425 #E39D25 #E39D25 #E39D25 #E39D25 #E39D25 #E39D25 #E39D25 #B13425 #B13425
#B13425 #B13425 #6A6B04 #6A6B04 #6B8CFF #6A6B04 #6A6B04 #6A6B04 #B13425 #B13425 #B13425 #B13425
#B13425 #6A6B04 #6A6B04 #6A6B04 #6B8CFF #6A6B04 #6A6B04 #6B8CFF #6A6B04 #6A6B04 #6A6B04 #B13425
#6A6B04 #6A6B04 #6A6B04 #6A6B04 #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6A6B04 #6A6B04 #6A6B04 #6A6B04
#E39D25 #E39D25 #6A6B04 #6B8CFF #E39D25 #6B8CFF #6B8CFF #E39D25 #6B8CFF #6A6B04 #E39D25 #E39D25
#6A6B04 #6A6B04 #6A6B04 #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6A6B04 #6A6B04 #6A6B04
#6A6B04 #6A6B04 #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6B8CFF #6A6B04 #6A6B04
#B13425 #B13425 #6B8CFF #6B8CFF #6B8CFF #B13425 #B13425 #6B8CFF #6B8CFF #6B8CFF #B13425 #B13425
#B13425 #6A6B04 #6A6B04 #6A6B04 #B13425 #B13425 #B13425 #B13425 #6A6B04 #6A6B04 #6A6B04 #B13425
#6A6B04 #6A6B04 #6A6B04 #6A6B04 #B13425 #B13425 #B13425 #B13425 #6A6B04 #6A6B04 #6A6B04 #6A6B04

Karena 05AB1E tidak dapat membuat warna, atau gambar apa pun ... Jika ini tidak dapat diterima, saya akan menghapusnya.

Guci Gurita Ajaib
sumber
Anda bisa menulis bungkus Bash dan mengatakan solusinya adalahBash + 05AB1E
Pavel
1
@Pavel Saya berpikir untuk melakukan itu, saya kira saya akan memilih solusi ini dengan milik orang lain; P.
Magic Octopus Mm
Saya tidak bisa mengatakan itu "menang" tetapi tolong simpan, karena ini adalah nilai kompresi yang hebat :)
xem
0

Sinclair BASIC - 573 byte

OK, jadi Spectrum tidak dapat menampilkan warna RGB seperti yang ditentukan, jadi gunakan yang sedekat mungkin.

10 let x=0:let y=0:let i=0
20 let a$="1c2e1f2i1c4c6b461d4646c46c1b464b6c46c14b6d4d1d6g1d4b24c1e4c24b24c14d2d4d6b4262b6246e2f6e2c1b2c6b1b2c1b2c1c4c1d4c14d1d4d"
30 let l=len a$
40 let i=i+1:let c=1:let p=0:let k=val a$(i)
50 if a$(i+1)>="a" then let c=code a$(i+1)-96:let i=i+1
60 print at y,x;ink k;"\::":let p=p+1:let x=x+1:if x=12 then let x=0:let y=y+1
70 if p<c then goto 60
80 if i<l then goto 40

String adalah warna (1 = biru, 2 = merah dll) diikuti oleh huruf untuk mewakili berapa kali blok itu berulang (dengan mengambil nilai ASCII minus 96 menjadi 1,2,3 dll). Nomor tanpa surat setelah itu hanya menggambar satu blok.

"\::"pada baris 60 adalah cara memasukkan gambar dalam editor teks sebelum berubah menjadi file TAP untuk dimuat ke emulator Fuse. (Menunjukkan grafik blok padat di layar).

Setiap kata kunci adalah satu byte di Sinclair BASIC, sudah termasuk hitungan dari perintah MENGINTIP setelah itu dihasilkan.

Itu adalah Mario

Brian
sumber
0

Perl - 399 171 byte

use MIME::Base64;$_='R0lGODdhDAAQAKEEAGuM/+OdJWprBLE0JSwAAAAADAAQAAACNoSHaAvpaoQMQQRmLdUXZM55XCUJDIVSmDCUjMhKrQSzSamxAbKP+5P6PQaqBiSxcCVpuJWkAAA7';
print decode_base64($_)

Menulis file gif ke stdout.

steve
sumber