픽셀 아트, 에피소드 1 : 슈퍼 마리오 디스플레이


47

이건 나야!

오늘날의 과제는 간단합니다. NES의 Super Mario Bros의 유휴 작은 마리오 스프라이트를 파란색 배경 위에 표시하는 프로그램 또는 함수를 작성하십시오.

화면 / 창 / 브라우저의 어느 곳에 나 12 * 16 픽셀을 표시하는 한 모든 종류의 항목이 유효합니다.

(편집 : 언어로 픽셀 아트를 할 수없는 경우 표시되는 이미지를 확대 할 수 있습니다. ASCII 아트 나 HTML 아트를 출력 할 수 있지만 올바른 색상을 사용할 수도 있습니다.)

이미지 (확대 400 %) :

다음 색상을 사용해야합니다.

  • 파란색 : # 6B8CFF
  • 빨간색 : # B13425
  • 녹색 / 갈색 : # 6A6B04
  • 주황색 : # E39D25

최단 프로그램 (문자 수)이 이깁니다!

표준 허점이 적용되지만 (특히 네트워크 연결이 허용되지 않음) 프로그램에서 이미지 파일을 하드 코딩하고 표시 할 수 있습니다. (이 트릭을 사용하는 항목은 별도 순위입니다)

간다!


현재 리더 보드

코드 만 사용하는 최단 답변 :

어떤 종류의 하드 코딩 된 이미지를 사용한 최단 답변 :


2
또한 파일 작성이 허용되지 않습니까? 표시되어야합니까?
Martin Ender

1
해당 이미지에 패턴이 표시되지 않습니다. 따라서 모든 언어에서 사용할 수있는 최상의 압축이 가능합니다.
Optimizer

20
Nitpicking : 슈퍼 마리오가 아닌 마리오입니다.
Dennis

5
재밌는 아이디어 ...... 속편에 대한 아이디어가 있습니다 : 마리오 이미지 (모든 형식)를 가져 와서 루이지의 이미지로 바꾸십시오!
Zibbobz

3
우리는 그와 같은 파이트 프로그램을 만들 수 있습니까?
Conor O'Brien

답변:


36

HTML / JS, 206 158 153 102


102

사용 된 트릭 : 압축 된 GIF 파일을 HTML 파일로 저장하고 끝에 <img src = #>를 추가하십시오.

이 항목 덕분에 : https://codegolf.stackexchange.com/a/39926/10732 @NiettheDarkAbsol

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

데모 : http://meuziere.free.fr/mario/gif.html


이전 버전 :

153

사용 된 트릭 : 압축 된 PNG 파일을 HTML 파일로 저장하고 끝에 <img src = #>를 추가하십시오.

‰PNG


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


158

Trick used : 압축 PNG의 다듬어 진 dataURI를 IMG 태그의 SRC로 설정하고 모든 것을 유니 코드 문자로 압축합니다.


JS 콘솔에서 다음을 실행하십시오.

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


206

포장 풀기 (206b) :

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

데모


사용되는 도구 :


태그가 필요하지 않습니다. 크롬의 데이터 URI를 사용하여 URL 표시 줄에 입력하십시오. 200 자
Optimizer

흠 ... 나는 dataURI가 유효한 "프로그램"이 아니라고 생각했다. 하지만 네 말이 맞아 모든 브라우저는 주소 표시 줄에 dataURI를 허용합니다.
xem

이제 OP로 직접 허점을 사용하고 있습니다.). 모든 작업을 GIF 형식의 외부 / 내장 압축으로 오프로드합니다. 그것이 멋지다면 우리는 지금 최고의 압축률로 모호한 이미지 형식을 찾아야합니다. 내 자신의 압축을 작성하는 많은 작업을 저축 할 수있었습니다. ;)
Martin Ender

2
@xem 글쎄, 당신의 도전, 당신의 전화. 그러나 이제 가장 압축 된 기존 파일 형식을 찾고 있다면 조금 의미가 없습니다. ;)
Martin Ender

1
rawgit 링크가 작동하지 않는 것 같습니다.
애디슨 크럼

27

매쓰, 412 292 252 212 163 148 143 141 문자

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

이것은 ^A코드 포인트에서 제어 문자에 대한 캐럿 표기법 을 사용 합니다 1. Mathematica에서는 실제로 문자를 포함시킬 수 있지만, 복사 할 때 모든 종류의 추악함이 발생합니다. 어쨌든, 위의 이전 버전보다 2 문자가 짧으며 색상 팔레트 색인을 인코딩하기 위해 base-5 대신 base-4를 사용하여 문자를 얻었습니다. 지금은 아래 설명과 스크린 샷을 수정하는 데 귀찮게 할 수 없으므로 여기에 원래의 기본 5 버전 답변을 남겨 드리겠습니다.


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

픽셀을 유니 코드 문자로 인코딩하고 있습니다 (예 : 문자 수로 계산하기 위해!).

Mathematica의 모습은 다음과 같습니다.

여기에 이미지 설명을 입력하십시오

작동 방식은 다음과 같습니다.

먼저 f유니 코드 문자열 (첫 번째 인수로 전달됨 #)을 정수 목록으로 변환 하는 함수 를 정의합니다 . 먼저 문자 코드를 얻습니다. 이것들은 기본 65536 숫자의 숫자로 해석 될 수 있습니다. 그리고 우리는 그 숫자를 다른 염기로 변환하여 두 번째 인수로 전달 #2합니다.

이제 더 긴 유니 코드 문자열을 위해 그렇게하겠습니다. ToCharacterCode이 목록을 생성합니다.

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

이것을 기본 65536으로 취급 :

7933607912575313477287527915733176998797205587959732019781370103381...
4831246938139171755469819519515972565671101475553962564506286523593

그리고 기본 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}

그것들은 파란색, 빨간색, 녹색, 주황색 순서로 픽셀의 색상 인덱스입니다. 우리는 그것들을 사용하여 숫자 목록, 즉 색상 팔레트에 색인을 생성합니다.

이제 컬러 팔레트입니다. 그렇습니다 "넴╫賿橫ӣ鴥". 위의 색인을 사용하여 올바른 문자열을 선택하십시오. 그런 다음 기본 256을 사용하여 함수를 다시 적용합니다. 그러면 12 개의 정수 목록이 생성됩니다.

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

우리는 ;;범위 색인을 사용 하여 현재 색상과 관련된 슬라이스를 가져옵니다.

마지막으로, Partition이것을 행으로 나누고에 12공급하는 데 사용 Image합니다. oil!

편집 : 유니 코드 포장으로 RLE는 더 이상 가치가 없습니다. 제거하면 50자가 저장되었습니다.

편집 : 물론 RLE이 없으면 16 번으로 갈 필요가 없습니다.

편집 : 그리고 우리가있는 동안 색상 팔레트를 유니 코드로 포장하지 않는 이유는 무엇입니까? (전체 색상 팔레트를 단일 문자열로 만들고 Partition거기에서도 사용하여 조금 더 절약 할 수있는 직감 이 있습니다. 나중에 시도하겠습니다.)

편집 : 예, 다른 5 바이트를 면도했습니다.


1
결과의 스크린 샷을 추가 하시겠습니까? (나는 당신의 코드를 믿지 않지만, 그것이 어떻게 표시되는지 궁금합니다 : 창에서 브라우저? 다른?)
xem

@xem 것입니다. 그래픽 입출력이 가능한 REPL 환경입니다.
Martin Ender

확실하지 않지만 이미지의 하단을 미러링하고 있습니까?
Optimizer

1
@Optimizer 아니오, 저축 할 것보다 적은 문자로 그렇게 할 수 있을지 의심됩니다.
Martin Ender

Mathematica 문서를 볼 때 물결표에 대한 사용법은 보이지 않지만 여기에서 한 함수의 결과를 다른 함수에 공급하고 두 번째 함수 (IntegerDigits)에 추가 인수를 적용하는 데 사용되는 것으로 나타납니다. 또한 색상 팔레트 : 이미지를 보면 4 가지 색상 만있는 것처럼 보이지만 색상 팔레트에는 그 이상이 포함 된 것 같습니다 : {177, 52, 37, 107, 140, 255, 106, 107, 4, 227 , 157, 37}. Image 설명서를 보면 ColorScale-> RGB와 같은 추가 옵션이 제공되지 않으면 회색조를 인쇄하는 것처럼 보입니다.
CryptoCommander

20

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

각 열의 정수를 풀고 스프라이트를 그립니다. 전체 프로그램으로 표시 :

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

필수 스크린 샷 :

나야 마리오


1
을 사용하여 9 바이트를 저장할 수 있습니다 import java.awt.*.
Kevin Cruijssen

15

x86 기계 코드, 102 바이트

작동 방식 : 이미지는 팔레트를 사용하여 2 비트 이미지로 저장됩니다. 이미지의 각 행은 3 바이트로 저장되고 그 뒤에 1 바이트의 색상 표가 저장됩니다. 이를 통해 데이터를 단일 DWORD로로드 할 수 있습니다. 12 개의 픽셀은 값의 가장 낮은 2 비트를 마스킹하여 비디오 메모리에 쓴 다음 전체 값을 2 비트로 오른쪽 시프 팅하여 출력됩니다. 행의 픽셀이 출력되면 팔레트 바이트가 VGA 팔레트에 기록됩니다. 이미지 그리기가 끝나면 프로그램이 무한 루프에 들어갑니다.

바이너리를 생성하는 어셈블리 코드 :

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로 인코딩 된 이진 파일은 Mario.com으로 저장하여 실행하십시오.

샘플 출력 : 여기에 이미지 설명을 입력하십시오


10

GIF-93 바이트

이미지 하드 코딩은 이제 괜찮습니다. :디

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

메모장에서 볼 수 있듯이 ++

NP ++ 스크린 샷

PHP로-131 바이트

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

1
어딘가에 gif를 업로드 할 수 있습니까 (예 : ctrlv.in)? PNG 대신 내 항목에 사용하고 싶습니다 :)
xem


@NiettheDarkAbsol 나는 당신이 어떻게 그 크기를 세는지 잘 모르겠지만 150 바이트를 세었다. 어쨌든 점수는 문자 기준이며 114자인 것으로 보입니다.
Martin Ender

2
예, PHP 스 니펫은 나에게 좋습니다 (마지막 2 바이트를 제거 할 수 있다고하더라도). 그러나 원시 gif 스 니펫은 프로그램이 아닙니다.
xem

1
@xem : 브라우저가 HTML / javascript / etc에 대한 "인터프리터"로 간주되고 동일한 메커니즘을 통해 원시 gif 스 니펫을 제공하면 원하는 출력이 생성됩니다 ... 차이가 작아집니다
Mooing Duck

10

배쉬 + ImageMagick이 : 350 331 321 자

(팔레트는 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:

샘플 출력 :

마리오

쉽게 추가 검사하려면 -scale 120convert10 배 확장 버전을 얻을 수의 매개 변수 :

마리오 스케일 10


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

도 난 upvoted DigitalTrauma 의 관련 팁을 하지만, 나는 그것을 잊고 계속 {... }. 감사합니다, @grawity.
manatwork

8

Octo / XO-Chip , 70 바이트

Octo는 CHIP-8 가상 머신에 대한 바이트 코드 명령어로 컴파일되는 고급 어셈블리 언어 입니다. Octo는 중첩 된 비트 플레인을 통해 4 색 비트 맵을 그리는 기능을 포함하여 기본 CHIP-8 바이트 코드에 "XO-Chip"이라고하는 일부 사용자 지정 확장 기능을 제공합니다.

컴파일 된 바이트는 다음과 같습니다.

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

마리오

브라우저에서 여기에서 실행하십시오 : http://johnearnest.github.io/Octo/index.html?gist=33aa37d4717a425ccd4f

바이트 코드를 생성하는 Octo 어셈블리 언어를 보는 것이 더 밝을 것입니다.

: 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 

기본 프로그램은 2 바이트 명령어 3 개입니다. 메모리 인덱스 레지스터 i를 데이터 세그먼트의 시작 부분으로 설정하고 그리기 평면 3을 선택합니다 (3은 비트 마스크입니다. 두 비트 평면 모두에서 4 가지 색상 모드로 그리려고 함을 나타냄). 레지스터 v0(0으로 초기화). 마지막 0은 스프라이트의 크기를 제공하며 SuperChip 및 XO-Chip 명령어 세트에서 16x16 스프라이트를 그립니다. 4 색 모드에서 첫 번째 평면의 비트 맵 바로 뒤에 두 번째 평면의 비트 맵이옵니다.

평면이 어떻게 작동하는지 보려면 마리오를 그린 후 하나의 평면을 오른쪽으로 스크롤하는이 수정 된 프로그램을 고려하십시오.

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 

이것을 즐긴다면 Octo로 작성된 다른 솔루션 중 하나를 좋아할 것입니다 . 실제로이 도구를 기반으로 10 월 한 달 동안 게임 잼이 진행되고 있습니다.


6

그루비 417 386

지옥처럼 재미 있지만 끔찍한 문자 수. GroovyFX 필요

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

언 골프 :

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

여기에 이미지 설명을 입력하십시오


grep()대신toList()
cfrick

5

HTML / JS, 427 개 408 264 256 239 226 문자

Obfuscatweet, 271 개 270 264 256 239 226 문자

obfuscatweet를 사용하여 이것을 <250 : D로 줄였습니다.

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

아래 코드는 이것이 구성되는 것입니다.

사용 된 트릭 : 이미지를 색상 타일의 base4 문자열로 변환하여 16 진 문자열로 변환했습니다. 밑줄 4의 색인은 색상을 나타냅니다 (0 = 파란, 1 = 빨간 등). div가 확장 할 내용이 필요하기 때문에 (p는 더 짧음) 인라인 p가있는 CSS가 사용됩니다. CSS는 문자로 시작해야하므로 CSS 태그 앞에 'A'가 붙습니다.

CSS에서 패딩하면 픽셀이 제공됩니다. 이 중 어느 것도 유니 코드 문자를 사용하지 않습니다. 어쨌든 익숙하지는 않지만 그 경우에는 300 이하가 될 것입니다. 패딩을 사용하는 것의 상대적인 장점은이 경우처럼 각 픽셀이 원하는 크기로 이미지를 날릴 수 있다는 것입니다. 9 픽셀을 사용했지만 추가 문자를 사용하면 표시된 픽셀 당 최대 99 픽셀을 얻을 수 있습니다.


CSS, 127 119 118 114 100 13 0 문자

에서 전환 p에 대한 rp필요성에 대한 제거합니다 display:inline, 비용 +1 문자, -15! 문자!

모든 색상을 제거하고 JS -87 문자로 배열에 넣습니다. 그런 다음 방금 모든 CSS를 제거했습니다.

JS, 300 개 289 280 275 329 325 문자

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

나는이 일반 JS를 처리하여 16 진수 문자열을 처리 할 수 ​​있도록 많은 노력을 기울였습니다. HTML 쓰기는 태그를 추가하는 함수에 의해 단축되었으며 클래스는 기본 4 값을 사용하여 표시 할 색상을 결정합니다.

추가 단축을 사용하여 charAt을 [] 괄호로 바꾸고 A0 클래스를 제거하고 p의 기본 색상으로 파란색을 설정하여 추가로 10자를 저장합니다. rp태그 사용에 따른 추가 비용 은 CSS에서 큰 손실로 상쇄됩니다.

while 루프 패드를 제거하고 유스 케이스에 '000'을 추가하고 -12를 슬라이싱하는 추가 오프셋.

색상에 대한 추가 JS를 추가 한 다음 패딩을 넣습니다. 패딩에 2 개의 추가 문자가 필요한 버그가 발견되었습니다. 많은 루프를 압축

HTML 파일, 430 개 429 419 399 366 342 문자

데모

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

좋은! 코드에서 줄 바꿈을 모두 제거하고 데모 링크 ( c99.nl ) 를 제공하는 것이 좋습니다 . 또한 xem.github.io/obfuscatweet를 사용하여 항목을 유니 코드 문자로 묶을 수 있습니다. 점수가 향상됩니다.
xem

또한 & lt; html> 태그를 제거하고 & lt; style> 태그를 끝에 놓고 마지막 CSS 규칙의 / style과 후행 "}"을 제거 할 수 있습니다.
xem

@ xem OK 나는 모든 라인을 잘라 내고 모든 것을 없애 버렸습니다. 난독 화를 위해 JS를 분할하는 최적의 방법을 알아 내려고 노력할 것입니다.
Compass

1
obfuscatweet는 모든 js 코드를 허용하므로 289 개의 js 문자를 넣을 수 있습니다. obfuscatweet의 출력은 브라우저 콘솔 또는 HTML 파일에서 올바른 charset 메타 태그를 사용하여 실행할 수 있습니다.
xem

psst, CSS 부분의 마지막 "}"을 제거하는 것을 잊었습니다. 그것없이 작동합니다.
xem

5

MATLAB, 194 193 바이트

코드:

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

그리고 출력 :

마리오

기본적으로 각 픽셀이 2 비트 숫자가되도록 마리오 이미지를 변환했습니다. 그런 다음 코드에 표시된 문자열 인베이스 32에서 인코딩했습니다. 이 문자열은 먼저 5 x 16 (2 비트 숫자의 각 행 (12px)이 기본 32로 인코딩 됨)으로 재구성 된 후 다시 기본 10으로 변환됩니다. 결과는 다시 기본 4로 변환되어 12x16 배열을 생성합니다. 2 비트 숫자. 이 숫자는을 사용하여 표시 imagesc()됩니다. 그런 다음 colormap()필요한 16 진수 값의 사용자 지정 색 맵을 사용하여 색이 할당 됩니다.

흥미롭게도 사용 된 바이트 수의 3 분의 1은 MATLAB 이 플롯 된 올바른 색상을 설정하도록하는 것입니다. 색상 코드는 전체 base32 문자열과 거의 동일한 바이트 수입니다.

색상을 수정하지 않고 ( colormap()호출 제거 ) 135 바이트이며 MATLAB R2013a의 기본 색상 맵에 대한 출력입니다.

마리오, 매핑 없음


4

자바 스크립트 / CSS / HTML 446 430 407 353 328 316

나는 가능한 한 많이 골프를 쳤고 더러운 HTML / JS로 끝났지 만 어떤 것이 든 작동합니다.

편집 : 이것입니다 ... 완료되었습니다.

이번에는 진지하게 편집 했습니다.

자바 스크립트

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

JSFiddle


연결된 JSFiddle은 여기에 게시 된 것과 동일한 버전을 포함하지 않으며 작동하지 않습니다 (적어도 Firefox에서는 그렇지 않습니다). 그건 그렇고, 좋은 출력을 얻으 *{line-height:1}려면 도움 이 될 것입니다.
manatwork

@manatwork 다시 시도하십시오.
SomeShinyObject

좋은. 그러나 왜 div? 호기심을 위해서 ECMAScript 버전을 사용해 보았습니다. 372자를 얻었다 : jsfiddle.net/768h7brb
manatwork

<div></div>보다 짧기 때문 입니다 document.createElement('div'). 그리고 JSFiddle은 좋아하지 않는다document.write
SomeShinyObject

1
삼항 연산자의 조건을 반대로하여 비교의 오른쪽을 제거하십시오 i%12?"":"<br>".
manatwork

4

Matlab- 449/332305 바이트

부분 압축 + 하부 이미지 측정법 사용 :

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)

-부분 압축 버전 (332 바이트) :

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)

완전히 압축되지 않은 버전 (449 바이트) :

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)

두 경우 모두 출력 (화면에서 분명히 확대되고 실제 화면은 12x16pix입니다) :
마리오


나는 누군가가 어떻게 든 대칭을 악용할지 궁금해했다. 내가 마침내 갔던 방법으로 길을 찾을 수 없었습니다.
Bumpy

4

C, 4999 바이트

이것은 절대적으로 여기에 대한 답변 중 일부와 경쟁 할 수는 없지만 C 답변에 기회를 줄 것이라고 생각했습니다. 코드는 하나의 긴 줄이므로 여기 에 pastebin 링크가 있습니다. 원하는 경우 gzipped 코드의 base64 인코딩은 다음과 같습니다.

H4sICAzFGFYCA21hcmlvLmMA3Zc9DsIwDIXv0qndUqchkXwUurAgdYiFEEyIu4NYaZBI7PzNT3Lsz4mf408bjdPjct3odh6HVeujdgg4K4vzohCM8esdjHOpkrVoALUtIrBX8y1R04DKNCGZmTp85CVdAHifYuxO3mElIlju6xaRICOgCo4pD64PoiTzHnkZcHYnRhAYcEEpFznxB1mXP4TdS/KeVGYPZbmVaQHlnRVZFi65OkhoGodq+RHrby4xsTj8i6RmapXrPvfa0Q8ZWZY1/UPbSiC7Z2bYA7r0zla57Xmo8sOEzxdNYIXFhxMAAA==

실행할 외부 라이브러리가 필요하지 않다는 점에서 주목할 만하다.

올바른 색상을 출력하기 위해 ANSI 색상 이스케이프 코드로 RGB 확장을 사용하기 때문에 xterm, Konsole 또는 GNOME 터미널이 필요합니다 (ANSI는 주황색을 정의하지 않음). 명백한 이유 때문에, 아이디어가 작동하지 않습니다. xterm을 사용하는 Cygwin에서 Windows에서 실행할 수 있습니다 (실제로 테스트 한 방법입니다). MSYS가 작동 할 수 있습니다. 잘 모르겠습니다.

내 컴퓨터의 출력 (xterm) :

나야, 마리오!


2
-1은 10의 배수가 아닙니다
Conor O'Brien

죄송합니다, 그것은 점수와 관련이있었습니다
Conor O'Brien

4

엑셀 VBA, 310 (307) 295 바이트

셀의 Activesheet 개체에 Mario를 출력하는 익명 VBE 즉시 실행 창 기능 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

도우미 Sub루틴

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

언 골프 버전

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 바이트 [...]표기법을 통한 Range(...)표기법 을 사용하기위한 -12 바이트 ; 16 진수 색상에서 int 색상으로 변경

산출

나야


3

배쉬 346

이스케이프 시퀀스와 같은 VT100을 사용하는 순수한 bash (그 팔레트에는 주황색이 없습니다)

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
별도의 문자 대신 팔레트에 배열을 사용하여 줄일 수 있습니다. 연관 배열을 선언하는 것이 길면 정수로 다시 코딩하는 것이 좋습니다. 코드의 295 문자 버전 : pastebin.com/d0LW0HM1
manatwork

3

Pyth, 83 바이트

면책 조항 : 질문을 게시 한 후 일부 언어 기능이 생성되었으므로 이는 후보자가 아닙니다.

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

다음은 16 진 덤프입니다.

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

여기 에서 프로그램을 다운로드하여 실행할 수도 있습니다

python3 pyth.py mario.pyth

파일이 생성됩니다 o.png.

마리오

설명:

4 가지 색상 만 있으므로 각 픽셀의 색상을 저장하는 데 2 ​​비트 만 필요합니다.

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

챌린지가 게시되기 전에 Pyth의 마지막 버전에서이 기능이 작동합니까?
lirtosiast

@ThomasKwa 그래, 잊었다. 정보를 편집하겠습니다.
Jakube

2

2 ~ 359 자 처리

나는이 도전을보고 프로세싱의 pixel [] 함수를 즉시 생각했다. 나는 그것이 더 짧아지기를 바랐지만 이것이 코드 골프에서의 첫 번째 시도라는 것을 고려할 때 여전히 결과에 상당히 만족합니다.

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

언 골프 :

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

여기에서 처리를 다운로드 할 수 있습니다


2

자바 스크립트 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);

그냥 작동 시켜서 여전히 골프를 치러야합니다


1
div행을 구성하는을 기본적으로 인라인 인 태그로 바꿀 수 있습니다 . 나는 그것을 테스트하지는 않았지만 사용 a하면 작동합니다. background대신에 사용할 수도 있습니다 background-color.
NinjaBearMonkey 1

2

펄-언 골프 드 927

나중에이 골프를해야합니다. 처음 시도 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();

나는 우리가 이것들을 많이 가지고 있다고 확신하지만 여기에 내 것이 있습니다 : 마리오!


2

배쉬 인쇄 가능 : 179 158 바이트

user2485710의 답변에서 영감을 얻었습니다 .

색상을 정확하게 일치하도록 터미널을 조정해야합니다.

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

이것이 내가 보는 것 입니다. 내가 뭔가 잘못하고 있습니까?
ardnew

2
@ardnew : BSD의 base64로의 사용 -D에 대한 디코딩-d대한 디버그 .
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"

기본 64의 픽셀 이미지 당 2 비트입니다. 픽셀은 ansi escape 코드에 매핑됩니다.

여기에 이미지 설명을 입력하십시오


시도조차하지 않아도 코드는 약간 골프화 할 수 있습니다 : tio.run/…
sergiol

2

JavaScript-256 자 (161 개의 난독 한 트윗)

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>

여기에 이미지 설명을 입력하십시오

방법:

  1. 비트 마스킹을 사용하여 63x8 비트 문자열은 0-9 범위의 숫자로 구성된 126x4 비트 값 배열을 제공합니다. (분명히 ... 4 비트로 이동하여 63자를 저장했지만 비트를 다시 풀기 위해 50자를 보냈습니다. 여전히 13자는 13 자입니다! :-)
  2. 4 가지 페인트 색상은 B, G, R, O 순서로 순환됩니다. 각 반복마다 0-9 div가 현재 색상에 대해 렌더링됩니다 (12 번째 줄마다 줄 바꿈).

색상주기의 최적 순서를 결정하기 위해 [R, G, B, O]의 24 개 순열 각각에 대해 원시 데이터에 대해 압축 알고리즘을 실행하고 가장 짧은 출력을 산출하는 알고리즘을 선택했습니다 (126이 가장 좋았습니다. 약 150 건)

ETA는 obfusca-tweet를 사용하여 다른 답변을 읽은 후에 만 ​​이것을 발견했습니다 ...

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

추가 아이디어. -3,0 비트 데이터 범위 0-6을 시도하십시오. 드문 7,8,9는 각각 4 개의 여분을 얻습니다 : 60000N. -한 번에 한 픽셀 씩 수평 이외의 모든 방향 및 속도로 색상주기 순열을 확인합니다. -여러 렌더 패스를 시도하여 색상을 계층화 할 수 있습니다.


D' oh는 이것이 문자가 아닌 문자에 관한 것이므로 새벽 16 비트 문자를 사용하여 데이터를 다시 반으로 줄일 수있었습니다.
Bumpy

1

자바 스크립트, 253 240 238 236

Obfuscatweet의 ED 소스 - 253 240 238 236

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

읽을 수있게 - 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>

덕분에 대해 @compass하기 <p>2 (5) 문자에 대한 @xem을 태그 트릭합니다.

데모

기본 36의 데이터를 변환하고 기본 4로 변환합니다.


나는 그것을 테스트 할 수 없지만 그 padding:9뒤에 단위 가 없으면 아무것도 하지 않는다고 생각 합니다. a또는 q대신에 암시 적으로 인라인 된 단일 문자 요소를 사용할 수도 있습니다 p.
NinjaBearMonkey 3

@hsl 데모 링크를 업데이트했으며 적어도 Mac에서는 Chrome, Firefox 및 Safari가 잘 작동합니다.
스낵

-2 바이트 : "|"바꾸기 문자열과 분할에서 9만큼. 또한 "document.write"를 3 번 ​​사용하면 24b와 같이 var에 저장해야합니다.
xem

@ xem 숫자 분할 트릭을 상기시켜 주셔서 감사합니다. 그리고 우리는 document.write변수에 할당 할 수 없으므로 (우리는 사용해야합니다 document.write.bind(document)) 최선을 다하는 것이 document변수 에 할당 되었습니다.
Snack

또는 (d = document) [w = "write"] (/ * 쓸 * /) 다음과 같이하면됩니다 : d [w] ( "Hi")
xem

1

자바 스크립트 ES6 (HTML + CSS), 199 (307) 3195 3630

사용 오브 푸 스크-A-트윗 :

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

이미지 나 여러 요소를 사용하지 않고 스프라이트를 표시합니다. CSS box-shadow속성을 오용하여 각 픽셀을 만듭니다. http://jsbin.com/pozohiyezo/ 에서 시도하십시오 . 이 난독 화 버전은 307 자입니다 .

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

이것은 원래의 일반 바닐라 HTML 버전입니다. 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, <p 태그를 닫을 수 없습니다 :)
xem

이 코드는 regpack과 같은 도구에서 매우 잘 압축 될 수 있습니다. 다음은 729b의 예입니다 (JS는 HTML을 작성하는 데 사용됨). goo.gl/7fF7kx
xem

@xem 실제로 JS로 코드를 생성하는 것을 고려하지는 않았지만 코드 패턴에 따라 훨씬 짧은 구매를 할 수있었습니다.
NinjaBearMonkey

1

자바 스크립트, 256 또는 245252 또는 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]+">")}))

256을 무시하는 것은 슬픈 일이지만 인쇄 할 수없는 문자를 사용하면 245 가 가능합니다.

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

인쇄 할 수없는 문자가 포함 된 솔루션을 제출하는 데 문제가 있습니다. 인수의 btoa결과 일 필요 atob("ij6n56kcraqlaqasasjaqbsasibtdlstlb2cmc2b2cid5dra2q3q2au7u55rj4j4kclcidld")길이의 1 개 심볼 슬래시 이스케이프 추가로.

두 솔루션을 모두 4 개의 기호로 줄입니다. 어레이 생성에 새로운 솔루션이 필요하지 않습니다.

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

이 버전에서는 이스케이프가 필요하지 않습니다. btoa의 인수의 결과입니다atob("k6n56kcraqlaqasasjaqbsasibtdlstlb2cmc2b2cid5dra2q3q2au7u55rj4j4kclbaidld")


나는 이것과 나의 마지막 도전에서 인쇄 할 수없는 문제를 발견했습니다. 도움이된다면 문자 8, 9 및 13이라고 생각했습니다 (잘못 실수 할 수는 있지만)
Bumpy

1

펄, 266 260 257 249 245 바이트

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

user2485710의 bash 솔루션과 유사한 접근 방식을 사용하여 VT100 스타일 출력을 작성합니다. 12 "vt100 픽셀", 12 * 7 = 84마다 개행을 삽입하여 개행에 대한 명시 적 N을 제거합니다.


1

SmileBASIC, 147 개 (136) 문자

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

출력 (자른) : 스크린 샷

데이터 문자열의 모든 문자를로 바 꾸었습니다. 문자 x코드는 다음과 같습니다
P$( UCS-2) : (팔레트) : FF6B,8CFF,FFB1,3425,FF6A,6B04,FFE3,D925
이미지 데이터 :0000,83F8,0A80,A3FA,8BE4,A5EA,BEA5,A55A,7EE5,0575,BFF5,0156,BFF5,0156,BBA5,0575,3AF4,A55A,3BC4,A5EA,0BC4,A3FA,0300,83F8

팔레트는 문자열로 저장되며 각 색상 (32 비트)은 두 문자 (각 16 비트)로 저장됩니다. 이미지 데이터 (픽셀 당 2 비트)는 다른 문자열 (문자 당 8 픽셀)에 저장됩니다.
운 좋게도이 파일은 UTF-8로 저장하면 상당히 커지기 때문에 문자로 점수가 매겨집니다.


1

05AB1E , 87 바이트 (비경쟁)

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

온라인으로 사용해보십시오!

출력 :

#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

05AB1E는 어떤 종류의 색상이나 그래픽도 할 수 없기 때문에 이것이 허용되지 않으면 삭제하겠습니다.


Bash 래퍼를 작성하고 솔루션을 말할 수 있습니다Bash + 05AB1E
Pavel

1
@Pavel 나는 그 일을 생각하고 있었고,이 솔루션을 다른 사람의 친구와 짝 짓게 될 것이라고 생각합니다 .P.
Magic Octopus Urn

나는 그것이 "승리"라고 말할 수는 없지만 그것이 큰 압축 점수이기 때문에 유지하십시오 :)
xem

0

싱클레어 베이직-573 바이트

스펙트럼은 지정된대로 RGB 색상을 표시 할 수 없으므로 가장 가까운 것을 사용했습니다.

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

문자열은 색상 (1 = 파란색, 2 = 빨간색 등) 다음에 블록이 반복되는 횟수를 나타내는 문자 (ASCII 값 -96을 1,2,3 등으로 가져옴)를 나타내는 문자입니다. 문자가없는 숫자는 단지 하나의 블록을 그립니다.

"\::"60 행은 퓨즈 에뮬레이터에로드하기 위해 TAP 파일로 변환하기 전에 텍스트 편집기에 그래픽을 입력하는 방법입니다. (화면에 솔리드 블록 그래픽으로 표시).

각 키워드는 Sinclair BASIC에서 1 바이트이며 생성 후 PEEK 명령의 개수를 포함합니다.

마리오


0

펄 - 399 171 바이트

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

gif 파일을 stdout에 씁니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.