Pixel-art, tập 1: hiển thị Super Mario


47

nó như nhau!

Nhiệm vụ hôm nay rất đơn giản: viết một chương trình, hoặc một chức năng hiển thị sprite Mario nhỏ nhàn rỗi, từ Super Mario Bros, trên NES, trên nền màu xanh.

Bất kỳ loại mục nhập nào cũng hợp lệ miễn là nó hiển thị 12 * 16 pixel đó ở bất cứ đâu trên màn hình / cửa sổ / trình duyệt.

(EDIT: hình ảnh được hiển thị có thể được thu nhỏ nếu ngôn ngữ của bạn không thể tạo nghệ thuật pixel. Bạn cũng có thể xuất nghệ thuật ASCII hoặc nghệ thuật HTML, nhưng sử dụng đúng màu.)

Hình ảnh (phóng to 400%):

Bạn phải sử dụng các màu sau:

  • màu xanh da trời: # 6B8CFF
  • màu đỏ: # B13425
  • xanh / nâu: # 6A6B04
  • màu cam: # E39D25

Chương trình ngắn nhất (về số lượng nhân vật) chiến thắng!

Các lỗ hổng tiêu chuẩn được áp dụng (đặc biệt, không cho phép kết nối mạng), nhưng mã hóa cứng và hiển thị tệp hình ảnh trong chương trình của bạn được cho phép. (các mục sử dụng thủ thuật này sẽ được xếp hạng riêng)

Chúng ta đi đây!


Bảng xếp hạng hiện tại

Câu trả lời ngắn nhất chỉ sử dụng mã:

Câu trả lời ngắn nhất bằng cách sử dụng một số loại hình ảnh được mã hóa cứng:


2
Ngoài ra, tạo một tập tin không được phép? Nó phải được hiển thị?
Martin Ender

1
Tôi không thấy bất kỳ mẫu nào trong hình ảnh đó. Vì vậy, tất cả đi xuống để nén tốt nhất người ta có thể sử dụng trong một ngôn ngữ.
Trình tối ưu hóa

20
Nitpicking: Đó là Mario, không phải Super Mario.
Dennis

5
Thật là một ý tưởng thú vị ... Đây là một ý tưởng cho một thử thách tiếp theo: Lấy hình ảnh Mario (Bất kỳ định dạng nào) và biến nó thành hình ảnh của Luigi!
Zibbobz

3
Chúng ta có thể làm một chương trình piet giống như anh ấy không?
Conor O'Brien

Câu trả lời:


36

HTML / JS, 206 158 153 102


102

Thủ thuật đã sử dụng: lưu tệp GIF đã nén dưới dạng tệp HTML và thêm <img src = #> vào cuối

Nhờ vào mục này: https://codegolf.stackexchange.com/a/39926/10732 bởi @NiettheDarkAbsol

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

Bản trình diễn: http://meuziere.free.fr/mario/gif.html


Các phiên bản cũ hơn:

153

Thủ thuật được sử dụng: lưu tệp PNG đã nén dưới dạng tệp HTML và thêm <img src = #> vào cuối

‰PNG


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


158

Thủ thuật được sử dụng: thiết lập dữ liệu được cắt xén của một PNG được nén thành SRC của thẻ IMG và đóng gói toàn bộ nội dung trong các ký tự Unicode.


Thực thi điều đó trong bảng điều khiển JS của bạn:

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


206

Giải nén (206b):

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

Bản giới thiệu


Công cụ được sử dụng:


Bạn không cần các thẻ. Chỉ cần sử dụng uri dữ liệu của chrome và nhập nó vào thanh url của bạn. 200 ký tự
Trình tối ưu hóa

Hừm ... Tôi coi dataURI không phải là một "chương trình" hợp lệ. Nhưng bạn nói đúng. Tất cả các trình duyệt cho phép dataURI trong thanh địa chỉ.
xem

Bây giờ bạn đang sử dụng một lỗ hổng chính mình là OP;). Bạn đang giảm tải tất cả công việc sang nén bên ngoài / tích hợp định dạng GIF. Nếu điều đó thật tuyệt, tất cả chúng ta nên đi săn các định dạng hình ảnh tối nghĩa với tốc độ nén tốt nhất hiện nay và tôi có thể đã tiết kiệm cho mình rất nhiều công việc tự viết nén. ;)
Martin Ender

2
@xem Vâng, thách thức của bạn, cuộc gọi của bạn. Nhưng có vẻ hơi vô nghĩa nếu bây giờ chúng ta chỉ tìm kiếm định dạng tệp nén nhất. ;)
Martin Ender

1
Nó xuất hiện các liên kết rawgit đã chết.
Addison Crump

27

Mathicala, 412 292 252 212 163 148 143 141 ký tự

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

Điều này sử dụng ký hiệu dấu mũ ^Acho ký tự điều khiển tại điểm mã 1. Trong Mathematica, tôi thực sự có thể nhúng nhân vật theo nghĩa đen, mặc dù điều đó dẫn đến tất cả các loại xấu xí khi sao chép mọi thứ xung quanh. Dù sao, ở trên ngắn hơn 2 ký tự so với phiên bản cũ của tôi và tôi đã chuyển chúng sang các ký tự bằng cách sử dụng cơ sở 4 thay vì cơ sở 5 để mã hóa các chỉ số bảng màu. Ngay bây giờ tôi không thể bận tâm để sửa lời giải thích và ảnh chụp màn hình bên dưới, vì vậy tôi sẽ để bạn ở đây với phiên bản gốc-5 của câu trả lời của tôi:


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

Tôi đang mã hóa các pixel bằng các ký tự Unicode (yay để đếm theo các ký tự!).

Đây là những gì nó trông giống như trong Mathematica:

nhập mô tả hình ảnh ở đây

Đây là cách nó hoạt động:

Trước tiên, chúng tôi xác định một hàm fbiến các chuỗi Unicode (được truyền vào làm đối số đầu tiên #) thành danh sách các số nguyên. Đầu tiên chúng ta có được mã ký tự. Chúng có thể được hiểu là các chữ số của một số 65536 cơ sở. Và sau đó chúng tôi chuyển đổi số đó sang một cơ sở khác, được truyền vào làm đối số thứ hai #2.

Bây giờ hãy làm điều đó cho chuỗi Unicode dài hơn. ToCharacterCodemang lại danh sách này:

{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}

Coi đây là căn cứ 65536:

7933607912575313477287527915733176998797205587959732019781370103381...
4831246938139171755469819519515972565671101475553962564506286523593

Và chuyển đổi sang cơ sở 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}

Đó là các chỉ số màu của các pixel, theo thứ tự xanh lam, đỏ, xanh lục, cam. Chúng tôi sử dụng chúng để lập chỉ mục vào danh sách các số đó, đó là bảng màu.

Bây giờ cho bảng màu. Đó là "넴╫賿橫ӣ鴥". Chúng tôi sử dụng các chỉ số trên để chọn chuỗi chính xác. Sau đó, chúng tôi áp dụng lại chức năng của mình, nhưng sử dụng cơ sở 256. Điều đó mang lại danh sách 12 số nguyên:

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

Chúng tôi sử dụng ;;lập chỉ mục phạm vi để kéo ra lát cắt có liên quan cho màu hiện tại.

Cuối cùng, chúng ta chỉ sử dụng Partitionđể chia nó thành các hàng 12và đưa nó vào Image. Võngà!

Chỉnh sửa: Với việc đóng gói Unicode, RLE không còn giá trị nữa. Xóa nó đã lưu 50 ký tự.

Chỉnh sửa: Tất nhiên, không có RLE, cũng không cần phải đến căn cứ 16.

Chỉnh sửa: Và trong khi chúng ta đang ở đó, tại sao không đóng gói bảng màu Unicode? (Tôi có linh cảm rằng tôi có thể tiết kiệm thêm một chút bằng cách làm cho toàn bộ bảng màu cũng thành một chuỗi và sử dụng Partitionở đó. Tôi cũng sẽ thử sau.)

Chỉnh sửa: Có, điều đó đã loại bỏ 5 byte khác.


1
bạn có phiền khi thêm một ảnh chụp màn hình của kết quả? (không phải tôi không tin mã của bạn, nhưng tò mò về cách hiển thị: trong cửa sổ? trình duyệt? khác?)
xem

@xem Sẽ làm. Đó là một môi trường REPL có khả năng vào và ra đồ họa.
Martin Ender

Không chắc chắn, nhưng bạn đang phản chiếu phần dưới của hình ảnh?
Trình tối ưu hóa

1
@Optimizer Không, tôi nghi ngờ tôi có thể làm điều đó với ít ký tự hơn tôi sẽ tiết kiệm.
Martin Ender

Khi tôi xem tài liệu Mathicala, tôi không thấy bất kỳ cách sử dụng nào trên dấu ngã nhưng có vẻ như bạn đang sử dụng nó để đưa kết quả của hàm này sang hàm khác và sau đó áp dụng một đối số bổ sung cho hàm thứ hai đó (IntegerDigits)? Ngoài ra, bảng màu: nhìn vào hình ảnh, nó xuất hiện chỉ có bốn màu, nhưng bảng màu của bạn dường như bao gồm nhiều hơn thế: {177, 52, 37, 107, 140, 255, 106, 107, 4, 227 , 157, 37}. Nhìn vào tài liệu cho Image, có vẻ như nó in ra thang độ xám trừ khi các tùy chọn bổ sung như ColorScale -> RGB được cung cấp.
CryptoCommander

20

Java: 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();}

Đơn giản chỉ cần vẽ sprite bằng cách giải nén một int cho mỗi cột. Hiển thị trong một chương trình đầy đủ:

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();
    }
}

Ảnh chụp màn hình bắt buộc:

là tôi, mario


1
Bạn có thể lưu 9 byte bằng cách sử dụng một import java.awt.*.
Kevin Cruijssen

15

Mã máy x86, 102 byte

Cách thức hoạt động: Hình ảnh được lưu trữ dưới dạng hình ảnh 2 bit bằng bảng màu. Mỗi hàng của hình ảnh được lưu trữ dưới dạng 3 byte, theo sau là 1 byte của bảng màu. Điều này cho phép dữ liệu được tải dưới dạng một DWORD duy nhất. Mười hai pixel được xuất ra bằng cách che đi 2 bit thấp nhất của giá trị, ghi chúng vào bộ nhớ video và sau đó dịch chuyển sang phải toàn bộ giá trị hai bit. Khi các pixel cho hàng đã được xuất ra, byte bảng màu được ghi vào bảng màu VGA. Khi hình ảnh được vẽ xong, chương trình sẽ vào một vòng lặp vô hạn.

Mã hội để tạo nhị phân:

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 

Nhị phân cơ sở 64 mã hóa, lưu nó dưới dạng Mario.com để chạy xuống

Đầu ra mẫu: nhập mô tả hình ảnh ở đây


10

GIF - 93 byte

Hardcoding hình ảnh rõ ràng là ổn bây giờ, vì vậy ... yay? :CƯỜI MỞ MIỆNG

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

Như đã thấy trong Notepad ++

ảnh chụp màn hình trong NP ++

Như PHP - 131 byte

<? header("Content-Type:image/gif");?>GIF87a  ¡ kŒÿã%jk±4%,       6„‡héj„Af-ÕdÎy\%  …R˜0”ŒÈJ­³I©±²û“ú=ª$±p%i¸•¤  ;

1
bạn có thể vui lòng tải lên gif của bạn ở đâu đó không (ví dụ: ctrlv.in)? Tôi muốn sử dụng nó trong mục nhập của tôi thay vì PNG :)
xem


@NiettheDarkAbsol Tôi không chắc bạn đã đếm kích thước của nó như thế nào, nhưng tôi đếm 150 byte. Bất kể, tính điểm là theo ký tự, và dường như là 114 ký tự.
Martin Ender

2
Vâng, đoạn mã PHP phù hợp với tôi (ngay cả khi bạn có thể xóa 2 byte cuối cùng). Nhưng đoạn trích gif thô không phải là một chương trình.
xem

1
@xem: Nếu trình duyệt được coi là "trình thông dịch" cho HTML / javascript / etc và cung cấp cho nó đoạn mã gif thô thông qua cùng một cơ chế dẫn đến kết quả đầu ra mong muốn ... sự khác biệt trở nên nhỏ bé
Mooing Duck

10

Bash + ImageMagick: 350 331 321 ký tự

(Bảng màu bị đánh cắp một cách đáng xấu hổ từ câu trả lời của Martin Büttner .)

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:

Đầu ra mẫu:

Mario

Để kiểm tra, nó dễ dàng thêm -scale 120vào convertcác tham số để có phiên bản tỷ lệ 10 lần:

Mario nhân rộng 10


2
s/185 191 127 185 254 254/1{85,91,27,85} 254{,}/; s/do/{/; s/done/}/
grawity

Doh. Tôi thậm chí bỏ phiếu tán DigitalTrauma liên quan 's mũi , nhưng tôi tiếp tục lãng quên rằng {.. }. Cảm ơn bạn, @grawity.
manatwork

8

Octo / XO-Chip , 70 byte

Octo là một ngôn ngữ lắp ráp cấp cao, biên dịch thành các hướng dẫn được mã hóa cho máy ảo CHIP-8 . Octo cung cấp một số tiện ích mở rộng tùy chỉnh được gọi là "XO-Chip" cho mã byte CHIP-8 cơ bản, bao gồm khả năng vẽ bitmap 4 màu thông qua các bitcoin phủ.

Các byte được biên dịch như sau:

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

Chạy nó ở đây trong trình duyệt của bạn: http://johnearnest.github.io/Octo/index.html?gist=33aa37d4717a425ccd4f

Có lẽ sẽ sáng sủa hơn khi thấy ngôn ngữ lắp ráp Octo tạo ra mã byte đó:

: 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 

Chương trình chính là ba hướng dẫn hai byte. Đặt thanh ghi chỉ số bộ nhớ iở đầu phân đoạn dữ liệu, chọn mặt phẳng vẽ 3 (3 là bitmask; điều này cho biết bạn muốn vẽ ở chế độ 4 màu bằng cả hai bitcoin) và sau đó vẽ một sprite ở vị trí x và y được cung cấp bởi đăng ký v0(khởi tạo bằng không). Số 0 cuối cùng cung cấp kích thước của sprite, trong bộ hướng dẫn SuperChip và XO-Chip sẽ vẽ một sprite 16x16. Trong chế độ 4 màu, một bitmap cho mặt phẳng thứ nhất được theo sau bởi một bitmap cho mặt phẳng thứ hai.

Để xem các mặt phẳng hoạt động như thế nào, hãy xem xét chương trình sửa đổi này cuộn một mặt phẳng sang phải sau khi vẽ 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 

Nếu bạn thích điều này, bạn có thể thích một trong những giải pháp khác của tôi được viết bằng Octo. Thực sự có một trò chơi kẹt trong tháng 10 dựa trên công cụ này.


6

Groovy 417 386

Vui như địa ngục, nhưng với số lượng char khủng khiếp. GroovyFX cần thiết

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]])}}}}}}

vô dụng:

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) 
            }
          }
      }
    }
  }
}

nhập mô tả hình ảnh ở đây


grep()thay vìtoList()
cfrick

5

HTML / JS, 427 408 264 256 239 226 ký tự

Obfuscatweet, 271 270 264 256 239 226 ký tự

Sử dụng obfuscatweet, quản lý để rút ngắn điều này xuống <250: D

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

Mã dưới đây là những gì bao gồm.

Thủ thuật được sử dụng: chuyển đổi hình ảnh thành chuỗi cơ sở4 Chuỗi màu, chuyển đổi nó thành Chuỗi thập lục phân. Chỉ mục của cơ sở 4 biểu thị màu sắc (0 = màu xanh lam, 1 = ĐỎ, v.v.) CSS với một p nội tuyến được sử dụng vì div cần nội dung để mở rộng (còn p ngắn hơn). Vì CSS cần bắt đầu bằng một chữ cái, 'A' được đặt trước các thẻ CSS.

Đệm từ CSS cho pixel. Không ai trong số này sử dụng các ký tự Unicode, điều mà tôi không quá quen thuộc với bất kỳ cách nào, mặc dù có lẽ nó sẽ trở thành phụ 300 trong trường hợp đó. Lợi thế tương đối của việc sử dụng phần đệm là bạn có thể, như trong trường hợp này, làm nổ hình ảnh đến bất kỳ kích thước nào bạn muốn mỗi pixel. Tôi đã sử dụng 9 pixel, nhưng nếu bạn tiêu tốn thêm một ký tự, bạn có thể nhận được tối đa 99 pixel cho mỗi pixel được đại diện.


CSS, 127 119 118 114 100 13 0 ký tự

Chuyển từ pđể rploại bỏ nhu cầu display:inline, chi phí +1 char, -15! ký tự!

Đã xóa tất cả các màu và đặt nó vào một mảng trong ký tự JS -87. Sau đó, tôi chỉ cần loại bỏ tất cả các css

JS, 300 289 280 275 329 325 ký tự

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>'));}

Tôi đã cố gắng cắt hết mức có thể ra khỏi chuỗi đơn giản này khi xử lý chuỗi hex, nhưng được cho là lần thử đầu tiên của tôi, đây là cách tôi chỉ sử dụng những gì tôi biết. Việc viết HTML đã được rút ngắn bằng một hàm thêm thẻ và các lớp sử dụng giá trị cơ sở 4 để xác định màu sắc để hiển thị.

Sử dụng rút ngắn bổ sung, thay thế charAt bằng dấu ngoặc [] và xóa lớp A0 và đặt màu xanh lam làm màu mặc định cho p, lưu thêm 10 ký tự. Chi phí bổ sung để sử dụng rpthẻ được bù đắp bằng một khoản lỗ lớn trong CSS.

Phần bù bổ sung từ việc loại bỏ vòng lặp while để chỉ thêm '000' cho trường hợp sử dụng và cắt -12 từ nó.

Đã thêm JS bổ sung cho màu sắc, sau đó đặt phần đệm vào đó. Nhận thấy một lỗi với phần đệm yêu cầu thêm 2 ký tự để sửa. Nén một loạt các vòng

Tệp HTML, 430 429 419 399 366 342 ký tự

Bản giới thiệu

<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>

Đẹp! Tôi khuyên bạn nên xóa tất cả các ngắt dòng trong mã của mình và cung cấp liên kết cho bản demo ( c99.nl ). Như một phần thưởng, bạn có thể đóng gói mục nhập của mình trong các ký tự Unicode bằng cách xem xem.github.io/obfuscatweet . Điều đó sẽ cải thiện điểm số của bạn.
xem

đồng thời, bạn có thể xóa các thẻ & lt; html> của mình, đặt thẻ & lt; style> ở cuối và xóa / style và dấu "}" của quy tắc CSS cuối cùng.
xem

@xem OK Tôi cắt hết tất cả các dòng ra và cắt xén mọi thứ. Tôi sẽ thử và tìm ra một cách tối ưu để phân tách JS cho obfuscatweet.
La bàn

1
obfuscatweet chấp nhận bất kỳ mã js nào (vì vậy bạn có thể đặt ký tự 289 js của mình ở đó) hoặc bất kỳ mã html nào (để bạn có thể sao chép tệp html của mình tại đây). Đầu ra của obfuscatweet có thể được thực thi trong bảng điều khiển của trình duyệt hoặc trong tệp HTML bằng cách sử dụng thẻ meta bộ ký tự bên phải.
xem

psst, bạn đã quên xóa "}" cuối cùng của phần CSS. Nó hoạt động mà không có nó.
xem

5

MATLAB, 194 193 byte

Mật mã:

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

Và đầu ra:

Mario

Về cơ bản tôi đã chuyển đổi hình ảnh Mario sao cho mỗi pixel là một số 2 bit. Sau đó tôi đã mã hóa rằng trong cơ sở 32 là chuỗi được hiển thị trong mã. Chuỗi này lần đầu tiên được định hình lại thành 5 x 16 (mỗi hàng (12px) của các số 2 bit được mã hóa thành cơ sở 32), sau đó được chuyển đổi trở lại thành cơ sở 10. Kết quả được chuyển đổi một lần nữa, lần này thành cơ sở 4 mang lại một mảng 12x16 Số 2 bit. Những con số này được vẽ bằng cách sử dụng imagesc(). Sau đó, các màu được chỉ định bằng cách sử dụng colormap()bản đồ màu tùy chỉnh của các giá trị hex cần thiết.

Thật thú vị, một phần ba số byte được sử dụng chỉ để MATLAB đặt màu chính xác sau khi nó được vẽ. Mã màu gần như cùng số byte với toàn bộ chuỗi base32!.

Không sửa màu (loại bỏ colormap()cuộc gọi), nó là 135 byte và đây là đầu ra cho bản đồ màu mặc định trên MATLAB R2013a:

Mario, không có bản đồ


4

JavaScript / CSS / HTML 446 430 407 353 328 316

Tôi đã chơi golf nhiều nhất có thể và kết thúc với một số HTML / JS bẩn, nhưng bất cứ điều gì ... nó hoạt động.

Chỉnh sửa : Đây là nó ... Tôi đã hoàn thành.

Chỉnh sửa Nghiêm túc thực hiện lần này.

JavaScript

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

Câu đố


JSFiddle được liên kết không chứa phiên bản giống như được đăng ở đây và không hoạt động (ít nhất là không phải với tôi trong Firefox). Nhân tiện, để đầu ra đẹp hơn *{line-height:1}sẽ giúp.
manatwork

@manatwork Thử lại.
Một sốShinyObject

Đẹp. Nhưng tại sao div? Chỉ vì tò mò, tôi đã thử phiên bản ECMAScript. Có 372 ký tự: jsfiddle.net/768h7brb
manatwork

<div></div>ngắn hơn document.createElement('div'). Và JSFiddle không thíchdocument.write
Một sốShinyObject

1
Đảo ngược điều kiện của nhà điều hành ternary để thoát khỏi bên phải so sánh : i%12?"":"<br>".
manatwork

4

Matlab - 449/332 305 byte

nén một phần + Sử dụng ký hiệu hình ảnh thấp hơn:

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)

- Phiên bản được nén một phần (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)

Phiên bản không nén hoàn toàn (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)

Đầu ra trong cả hai trường hợp (rõ ràng được phóng to trên màn hình, thực tế là 12x16pix):
MarioMagnified


Này tôi tự hỏi liệu có ai sẽ khai thác tính đối xứng bằng cách nào đó không. Tôi không thể tìm ra cách với phương pháp cuối cùng tôi đã thực hiện.
Bumpy

4

C, 4999 byte

Điều này hoàn toàn không thể cạnh tranh với một số câu trả lời ở đây, nhưng tôi nghĩ tôi sẽ đưa ra câu trả lời C. Mã này là một dòng dài duy nhất, vì vậy đây là một liên kết pastebin. Nếu bạn thích, đây là mã hóa base64 của mã được nén:

H4sICAzFGFYCA21hcmlvLmMA3Zc9DsIwDIXv0qndUqchkXwUurAgdYiFEEyIu4NYaZBI7PzNT3Lsz4mf408bjdPjct3odh6HVeujdgg4K4vzohCM8esdjHOpkrVoALUtIrBX8y1R04DKNCGZmTp85CVdAHifYuxO3mElIlju6xaRICOgCo4pD64PoiTzHnkZcHYnRhAYcEEpFznxB1mXP4TdS/KeVGYPZbmVaQHlnRVZFi65OkhoGodq+RHrby4xsTj8i6RmapXrPvfa0Q8ZWZY1/UPbSiC7Z2bYA7r0zla57Xmo8sOEzxdNYIXFhxMAAA==

Đáng chú ý ở chỗ nó không yêu cầu thư viện bên ngoài để chạy.

Yêu cầu thiết bị đầu cuối xterm, Konsole hoặc Gnome, vì nó sử dụng mở rộng RGB sang mã thoát màu ANSI để xuất ra màu chính xác (ANSI không xác định màu cam). Vì những lý do rõ ràng, ideone sẽ không hoạt động. Nó có thể được chạy trong Windows dưới Cygwin, sử dụng xterm (thực tế, đó là cách tôi đã thử nghiệm nó). MSYS có thể hoạt động; Tôi không chắc.

Đầu ra trên máy của tôi (xterm):

đó là tôi, mario!


2
-1 không phải là bội số của 10
Conor O'Brien

Xin lỗi, nó liên quan đến điểm số
Conor O'Brien

4

VBA Excel, 310 307 295 byte

VBE ẩn danh Immediates chức năng Window tạo ra Mario cho đối tượng Activesheet tại các ô 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

Trợ giúp Subthường xuyên a

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

Phiên bản Ungolfed

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 để xóa khoảng trắng -12 byte để sử dụng [...]ký hiệu trên Range(...)ký hiệu; thay đổi từ màu hex sang màu int

Đầu ra

Nó như nhau


3

Bash 346

bash thuần túy với VT100 giống như các chuỗi thoát (xin lỗi không có màu cam trong bảng màu đó)

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"

1
Bạn có thể giảm nó bằng cách sử dụng một mảng cho bảng màu thay vì các ký tự riêng biệt. Khi khai báo mảng kết hợp là dài, tốt hơn nên mã hóa lại thành số nguyên. Phiên bản 295 ký tự của mã của bạn: pastebin.com/d0LW0HM1
manatwork

3

Bình thường, 83 byte

Tuyên bố miễn trừ trách nhiệm: Đây không phải là một ứng cử viên chiến thắng, bởi vì một số tính năng ngôn ngữ đã được tạo sau khi đăng câu hỏi.

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

Đây là một kết xuất hex:

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

Bạn cũng có thể tải chương trình tại đây và chạy nó với

python3 pyth.py mario.pyth

Điều này tạo ra một tập tin o.png:

Mario

Giải trình:

Chỉ có 4 màu khác nhau, do đó tôi chỉ cần 2 bit để lưu màu của từng pixel.

.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"

Điều này có hoạt động trong phiên bản cuối cùng của Pyth trước khi thử thách được đăng không?
lirtosiast

@ThomasKwa Vâng, quên rồi. Tôi sẽ chỉnh sửa thông tin.
Jakube

2

Xử lý 2 - 359 ký tự

Tôi thấy thách thức này và nghĩ ngay đến chức năng pixel [] của Chế biến. Tôi đã hy vọng nó sẽ ngắn hơn nhưng tôi vẫn khá hài lòng với kết quả này vì đây là nỗ lực đầu tiên của tôi ở môn đánh gôn.

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();

vô dụng:

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();

bạn có thể tải chế biến ở đây


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);

chỉ cần nó hoạt động, vẫn phải đi vào và đánh gôn


1
Bạn có thể thay thế các divs tạo nên các hàng bằng một thẻ theo mặc định. Tôi đã không thử nó, nhưng sử dụng anên hoạt động. Bạn cũng có thể sử dụng backgroundthay vì background-color.
NinjaBearMonkey

2

Perl - Ungolfed 927

Tôi sẽ phải chơi cái này sau. Lần đầu thử 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();

Tôi chắc rằng chúng ta có rất nhiều trong số này nhưng đây là của tôi: Mario!


2

Bash có thể in: 179 158 byte

Lấy cảm hứng từ câu trả lời của user2485710 .

Bạn cần điều chỉnh thiết bị đầu cuối của bạn để phù hợp với màu sắc chính xác.

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 /')"

đây là những gì tôi thấy . Tôi có làm điều gì sai?
ardew

2
@ardnew: BSD base64 sử dụng -Dcho giải mã-dcho gỡ lỗi .
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"

Đó là hình ảnh 2 bit cho mỗi pixel trong cơ sở 64. Pixels được ánh xạ tới mã thoát ansi.

nhập mô tả hình ảnh ở đây


Thậm chí không cần cố gắng, mã của bạn có vẻ hơi khó chơi: tio.run/ Từ
sergiol

2

JavaScript - 256 ký tự (161 obfusc-a-tweet)

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>

nhập mô tả hình ảnh ở đây

Phương pháp:

  1. Sử dụng bitmasking, chuỗi 63x8 bit cung cấp mảng giá trị 126x4 bit bao gồm các số trong phạm vi 0-9. (Thật khó chịu ... đã lưu 63 ký tự bằng cách đi 4 bit, nhưng đã dành 50 ký tự để giải nén các bit một lần nữa lol. Tuy nhiên, 13 ký tự là 13 ký tự! :-)
  2. 4 màu sơn được tuần hoàn theo thứ tự: B, G, R, O. Ở mỗi lần lặp, 0-9 div được hiển thị cho màu hiện tại (với một dòng ngắt mỗi 12 giây)

Để xác định thứ tự tối ưu cho chu kỳ màu, tôi đã chạy thuật toán nén dựa trên dữ liệu thô cho mỗi 24 hoán vị của [R, G, B, O] và chọn một thuật toán mang lại đầu ra ngắn nhất (126 là tốt nhất, tối ưu nhất là khoảng 150-cái gì đó)

ETA chỉ phát hiện ra điều này sau khi đọc các câu trả lời khác bằng obfusca-tweet ...

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

Thêm ý tưởng. - Hãy thử phạm vi dữ liệu 3 bit 0-6, với mức tăng 7,8,9 hiếm có thêm 4 mỗi: 60000N. - kiểm tra hoán vị chu kỳ màu theo mọi hướng và tốc độ khác với chiều ngang một pixel mỗi lần. - thử nhiều lượt kết xuất để màu sắc có thể được xếp lớp.


Mọi người mới nhận ra rằng đây là về ký tự không phải là tạm biệt, vì vậy có lẽ có thể đã giảm một nửa dữ liệu một lần nữa bằng cách sử dụng ký tự 16 bit.
Bumpy

1

Javascript, 253 240 238 236

Nguồn ed Obfuscatweet - 253 240 238 236

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

Không cố gắng - 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>

Cảm ơn @compass về các <p>thủ thuật thẻ và @xem cho 2 (5) ký tự.

Bản giới thiệu

Nó chuyển đổi dữ liệu từ cơ sở 36 và chuyển đổi sang cơ sở 4.


Tôi không thể kiểm tra nó, nhưng tôi không nghĩ padding:9Có gì không có đơn vị sau nó. Bạn cũng có thể sử dụng một yếu tố một chữ cái giống như ahoặc qhoàn toàn là nội tuyến, thay vì p.
NinjaBearMonkey

@hsl Tôi đã cập nhật liên kết demo và nó hoạt động tốt ít nhất là Chrome, Firefox và Safari trên Mac của tôi.
Ăn nhẹ

-2 byte: thay thế "|" bằng 9 trong chuỗi và phân chia. Ngoài ra, bạn sử dụng 3 lần "document.write", bạn nên đặt nó vào một var để lưu, như, 24b)
xem

@xem Cảm ơn bạn đã nhắc nhở tôi về thủ thuật chia số. Và vì chúng ta không thể gán document.writecho biến (chúng ta nên sử dụng document.write.bind(document)), nên tốt nhất của tôi là gán documentcho biến.
Ăn nhẹ

hoặc, bạn có thể làm điều này lần đầu tiên: (d = document) [w = "write"] (/ * những điều cần viết * /) và chỉ cần làm điều đó sau: d [w] ("Hi")
xem

1

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

Sử dụng Obfusc-a-tweet :

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

Điều này hiển thị sprite mà không sử dụng bất kỳ hình ảnh hoặc nhiều yếu tố; nó chỉ lạm dụng thuộc tính CSS box-shadowđể tạo từng pixel. Hãy dùng thử tại http://jsbin.com/pozohiyezo/ . Phiên bản chưa được chỉnh sửa này là 307 ký tự :

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+'"')

Đây là phiên bản HTML gốc, vani đơn giản. Xem nó trong hành động tại 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"

TIL, bạn không thể đóng thẻ <p :)
xem

mã này có thể có một nén rất tốt trong một công cụ như regpack. Đây là một ví dụ trong 729b (tuy nhiên, JS được sử dụng để viết HTML): goo.gl/7fF7kx
xem

@xem Tôi thực sự thậm chí đã không cân nhắc việc tạo mã bằng JS, nhưng tôi đã có thể làm cho việc mua nó ngắn hơn nhiều theo mẫu của mã.
NinjaBearMonkey

1

Javascript, 256 hoặc 245 252 hoặc 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]+">")}))

Thật buồn khi ghi đè 256, nhưng có thể có 245 nếu sử dụng các ký tự không thể in được:

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]+">")}))

Có một số vấn đề với việc gửi giải pháp với các ký tự không thể in được. Đối số btoaphải là kết quả của atob("ij6n56kcraqlaqasasjaqbsasibtdlstlb2cmc2b2cid5dra2q3q2au7u55rj4j4kclcidld")1 ký hiệu độ dài được thêm vào để thoát dấu gạch chéo ngược.

Rút ngắn cả hai giải pháp bằng 4 ký hiệu: chúng ta không cần mới để tạo mảng.

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]+">")}))

Không có lối thoát là cần thiết trong phiên bản này. Các btoa's đối số là kết quả củaatob("k6n56kcraqlaqasasjaqbsasibtdlstlb2cmc2b2cid5dra2q3q2au7u55rj4j4kclbaidld")


Tôi nhận thấy vấn đề không thể in được về điều này và thử thách cuối cùng của tôi cũng vậy. Tôi nghĩ rằng đó chỉ là ký tự 8, 9 & 13 nếu điều đó có ích (mặc dù tôi có thể dễ bị nhầm lẫn)
Bumpy

1

Perl, 266 260 256 249 245 byte

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

Sử dụng cách tiếp cận tương tự như giải pháp bash của user2485710 để viết đầu ra kiểu VT100. Xóa N rõ ràng cho dòng mới bằng cách chèn một dòng mới cứ sau 12 "vt100 pixel", 12 * 7 = 84.


1

SmileBASIC, 147 136 ký tự

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

Đầu ra (cắt): ảnh chụp màn hình

Tôi đã thay thế tất cả các ký tự trong chuỗi dữ liệu bằng x's, đây là mã ký tự (trong UCS-2):
P$(Bảng màu): FF6B,8CFF,FFB1,3425,FF6A,6B04,FFE3,D925
Dữ liệu hình ảnh:0000,83F8,0A80,A3FA,8BE4,A5EA,BEA5,A55A,7EE5,0575,BFF5,0156,BFF5,0156,BBA5,0575,3AF4,A55A,3BC4,A5EA,0BC4,A3FA,0300,83F8

Bảng màu được lưu trữ trong một chuỗi, mỗi màu (32 bit) được lưu trữ trong hai ký tự (mỗi ký tự 16 bit). Dữ liệu hình ảnh (2 bit mỗi pixel) được lưu trữ trong một chuỗi khác (8 pixel mỗi ký tự)
May mắn thay, thử thách được ghi bằng ký tự, vì tệp này lớn hơn đáng kể nếu được lưu trong UTF-8.


1

05AB1E , 87 byte (Không cạnh tranh)

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

Hãy thử trực tuyến!

Đầu ra:

#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

Bởi vì 05AB1E không thể làm màu sắc, hoặc đồ họa dưới bất kỳ hình thức nào ... Nếu điều này không được chấp nhận, tôi sẽ xóa nó.


Bạn có thể viết một trình bao bọc Bash và nói rằng giải pháp của bạn làBash + 05AB1E
Pavel

1
@Pavel Tôi đã nghĩ đến việc đó, đoán tôi sẽ kết hợp giải pháp này với người khác; P.
Bạch tuộc ma thuật Urn

Tôi không thể nói nó "thắng" nhưng xin hãy giữ nó, vì đó là một số điểm nén tuyệt vời :)
xem

0

BASlair BASIC - 573 byte

OK, do đó, Spectrum không thể hiển thị màu RGB như được chỉ định, vì vậy đã sử dụng màu gần nhất có thể.

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

Chuỗi là màu (1 = xanh lam, 2 = đỏ, v.v.) theo sau là một chữ cái để biểu thị số lần lặp lại của khối đó (bằng cách lấy giá trị ASCII trừ 96 để trở thành 1,2,3, v.v.). Một số không có chữ cái sau nó chỉ vẽ một khối.

"\::"trong dòng 60 là cách nhập đồ họa vào trình soạn thảo văn bản trước khi chuyển thành tệp TAP để tải vào trình giả lập Fuse. (Hiển thị dưới dạng đồ họa khối rắn trên màn hình).

Mỗi từ khóa là một byte trong Sinclair BASIC, đã bao gồm số đếm từ lệnh PEEK sau khi được tạo.

Đó là một Mario


0

Perl - 399 171 byte

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

Viết tập tin gif vào thiết bị xuất chuẩn.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.