Tạo lưới màu RGB


47

Điều này! là một lưới màu RGB ...

Lưới RGB cơ bản

Về cơ bản nó là một ma trận 2 chiều trong đó:

  • Hàng đầu tiên và cột đầu tiên có màu đỏ.
  • Hàng thứ hai và cột thứ hai có màu xanh lá cây.
  • Hàng thứ ba và cột thứ ba có màu xanh lam.

Dưới đây là các màu được mô tả bằng đồ họa, sử dụng các chữ cái R, G và B.

sơ đồ hàng và cột

Dưới đây là cách chúng tôi tính toán màu sắc của từng không gian trên lưới được tính toán.

  • Đỏ + Đỏ = Đỏ (# FF0000)
  • Xanh + Xanh = Xanh lục (# 00FF00)
  • Xanh lam + Xanh lam = Xanh lam (# 0000FF)
  • Đỏ + Xanh = Vàng (# FFFF00)
  • Đỏ + Xanh = Tím (# FF00FF)
  • Xanh + Xanh = Teal (# 00FFFF)

Các thách thức

  • Viết mã để tạo lưới màu RGB.
  • Đó là mã golf, vì vậy hãy thử làm như vậy với số byte nhỏ nhất.
  • Sử dụng bất kỳ ngôn ngữ lập trình hoặc ngôn ngữ đánh dấu để tạo lưới của bạn.
  • Điều tôi quan tâm:
    • Kết quả sẽ hiển thị đồ họa một lưới RGB với các màu được xác định.
  • Những điều tôi không quan tâm:
    • Nếu đầu ra là một hình ảnh, HTML, SVG hoặc đánh dấu khác.
    • Kích thước hoặc hình dạng của các khối màu.
    • Biên giới, khoảng cách vv giữa hoặc xung quanh các khối.
    • Nó chắc chắn không phải có nhãn cho bạn biết màu của hàng và cột phải là gì.

2
Chúng ta có thể xuất một đối tượng pháp sư có nguồn gốc từ ngôn ngữ của mình không, ví dụ như một Bitmapđối tượng trong C #?
Hiện thân của sự thiếu hiểu biết

1
@EmbodimentofIgnorance nghe có vẻ tốt với tôi.
AJFaraday

11
Tôi đang chờ đợi giải pháp ở Piet
manassehkatz

4
@manassehkatz Có thể mã hóa dữ liệu cứng sẽ tốt hơn so với thực hiện nó?
AJFaraday

3
Không phải là nó thực sự quan trọng, nhưng cá nhân tôi đã sử dụng màu lục lamđỏ tươi thay vì màu tealmàu tím (hoặc bất cứ thứ gì khác). Theo tôi biết, đây là những thuật ngữ chính thức được sử dụng trong in ấn hoặc các mô hình màu trừ như CMYK .
Arnauld

Câu trả lời:


34

Bash, 44

  • Lưu 2 byte nhờ @NahuelFouilleul
  • 2 byte được lưu nhờ @manatwork
printf "${f=^[[3%dm.}$f$f
" 1 3 5 3 2 6 5 6 4

Ở đây, các khối là .nhân vật. ^[là một ký tự thoát ASCII theo nghĩa đen (0x1b).

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

Bạn có thể tạo lại tập lệnh này như sau:

base64 -d <<< cHJpbnRmICIke2Y9G1szJWRtLn0kZiRmCiIgMSAzIDUgMyAyIDYgNSA2IDQ= > rgbgrid.sh

11
cái quái gì thế vui lòng giải thích :)
flawr

1
có thể tiết kiệm 2 byte bằng cách mở rộng shellprintf ${f=\\e[3%dm.}$f$f\\n 1 3 5 3 2 6 5 6 4
Nahuel Fouilleul

1
Điều này thực sự làm sáng ngày của tôi, cảm ơn bạn!
AJFaraday

4
printf \\e[3%dm. 1'mở rộng tới \\e[31m.đó là mã thoát ANSI cho màu đỏ và vv và .là ký tự để in.
Fredrik Pihl

3
Tiếp tục với đề xuất của @ NahuelFouilleul, hãy trích dẫn nó: printf "${f=^[[3%dm.}$f$f␤" 1 3 5 3 2 6 5 6 4(Trường hợp ^[ký tự thoát theo nghĩa đen = 1 byte và ␤ ký tự dòng mới theo nghĩa đen = 1 byte.)
manatwork

26

Lắp ráp 8088, IBM PC DOS,  44  43 byte

Liệt kê:

BE 0122     MOV  SI, OFFSET CTBL    ; load color bar table into [SI]
        LOOP_COLOR: 
B9 0001     MOV  CX, 1              ; display 1 char and clear CH (changed by INT 10H:3)
AC          LODSB                   ; load next color byte 
8A D8       MOV  BL, AL             ; move new color to BL
3C 10       CMP  AL, 010H           ; if this is third color in row: SF=0, CF=0 
                                    ; else if last color: SF=1, CF=0
                                    ; else continue on same row: CF=1
B8 09DB     MOV  AX, 09DBH          ; AH=9 (write char with attr), AL=0DBH (a block char) 
CD 10       INT  10H                ; call PC BIOS, display color block
B4 03       MOV  AH, 3              ; get cursor position function
CD 10       INT  10H                ; call PC BIOS, get cursor
72 04       JC   NEXT_COL           ; if not last in row, move to next column 
78 09       JS   EXIT               ; if last color, exit 
B2 FF       MOV  DL, -1             ; otherwise move to first column and next row 
        NEXT_COL:
42          INC  DX                 ; move to next column (and/or row)
B4 02       MOV  AH, 2              ; set cursor position function 
CD 10       INT  10H                ; call PC BIOS, set cursor position
EB E2       JMP  LOOP_COLOR         ; loop to next color byte 
        EXIT:
C3          RET                     ; return to DOS
CTBL    DB  0CH, 0EH, 1DH, 0EH, 0AH, 1BH, 0DH, 0BH, 91H ; color table

Điều này sử dụng các INT 10Hdịch vụ video BIOS PC của IBM để ghi lưới màu lên màn hình. Thật không may, cách duy nhất để viết một thuộc tính màu cụ thể cũng yêu cầu viết mã để đặt con trỏ vào vị trí chính xác tiếp theo, vì vậy có rất nhiều mã bổ sung cho điều đó.

Đây là đầu ra chạy trên IBM PC CGA (ở chế độ văn bản 40x25 để làm cho nó lớn hơn).

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

Tải xuống và kiểm tra RGBGRID.COM cho DOS.


1
Điều này sẽ làm việc trong dos, prib không nhưng sẽ được mát mẻ nếu nó đã làm.
soái ca thủ công

@marshalcraft Có, trên thực tế, điều này sẽ chỉ hoạt động trong DOS hoặc sử dụng trình giả lập DOS như DOSBox, pcjs.org, v.v. Tôi đã thêm một liên kết để tải xuống tệp thực thi để bạn có thể dùng thử.
640KB

Windows đi kèm với trình giả lập dos giới hạn, có lẽ bây giờ được gọi là dấu nhắc lệnh, mà tôi có lẽ nên nói, sẽ rất tuyệt nếu nó hoạt động với cmd hoặc PowerShell haha.
soái ca thủ công

1
@marshalcraft Bạn đã đúng, tuy nhiên vì đối với DOS, nó là tệp thực thi 16 bit và nếu bạn có phiên bản Windows 32 bit thì nó thực sự nên chạy vì nó có môi trường thời gian chạy 16 bit. Tuy nhiên, phiên bản Windows 64 bit sẽ không chạy được vì nó chỉ có thời gian chạy 32 bit.
640KB

1
Chúa ơi đây là một câu trả lời hay
Samy Bencherif


18

Mã máy 80386, IBM PC DOS, 38 byte

lục giác:

B0 13 CD 10 68 00 A0 1F 66 C7 06 00 00 28 2C 24
00 66 C7 06 40 01 2C 30 34 00 66 C7 06 80 02 24
34 20 00 CD 16 C3

asm:

mov al,13h
int 10h ; initialize vga 13h mode (320x200x256 colors)
push 0a000h
pop ds ; push video buffer address to ds
mov dword ptr ds:0, 242c28h ; print 3 pixels
mov dword ptr ds:320, 34302ch ; print 3 pixels
mov dword ptr ds:640, 203424h ; print 3 pixels
int 16h ; wait for any keypress
ret ; exit to os

đầu ra được thu nhỏ từ dosbox:

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


Lưu ý rằng mov al, 13hkhông chính xác trừ khi được DOSBox bảo đảm có ah = 0tại điểm vào chương trình.
Margaret Bloom

@MargaretBloom ax là 0 khi bắt đầu ứng dụng com trong ms dos
Iłya Bursov

Cảm ơn Iłya, thật tốt khi biết điều đó!
Margaret Bloom

18

Excel VBA (Cửa sổ ngay lập tức), 80 byte

For i=1To 9:Cells(i Mod 3+1,(i+1)/3).Interior.ColorIndex=Mid(673486857,i,1):Next

VBA Excel (Hàm), 96 byte

Sub g()
For i=1To 9
Cells(i Mod 3+1,(i+1)/3).Interior.ColorIndex=Mid(673486857,i,1)
Next
End Sub

Không phải là một công cụ khủng khiếp cho công việc ... Tôi đánh giá cao thực tế là Excel đã hiển thị lưới nên việc đặt màu nền là vấn đề.

Lưới màu Excel

Tín dụng cho @Neil vì đã đề xuất tôi sử dụng ColorIndexthay vì Colordẫn đến tiết kiệm 43 byte.

-21 byte nhờ @Keeta

-16 byte nhờ @Chronocidal đã đề xuất "Cửa sổ ngay lập tức"

-2 byte nhờ @i_saw_drones

Rất nhiều thay đổi từ trình ban đầu của tôi :)


1
Bạn có thể có thể làm tốt hơn với ColorIndexsố đó từ 3 đến 8 ở đây, mà bạn có thể mã hóa thành một chuỗi hoặc một cái gì đó.
Neil

@Neil - Thật vậy :) Tôi đã có thể làm cho nó ngắn hơn một chút bằng cách sử dụng nó. Cảm ơn vì tiền hỗ trợ.
dana

Tôi không thấy bất cứ điều gì ngăn bạn thay đổi điều này thành Sub F () và End Sub để tiết kiệm hơn.
Keeta

1
Đừng biến nó thành một chức năng và chạy nó trong Cửa sổ ngay lập tức để giảm 21 byte:for i=1 To 3:for j=1 To 3:Cells(i,j).Interior.ColorIndex=Mid("367408005",i*j,1):next j,i
Chronocidal

1
Bạn cũng có thể xóa dấu ngoặc kép khỏi chuỗi, VBA sẽ tự động ép số vào chuỗi.
i_saw_drones

16

GFA Basic 2.02 (Atari ST), 48 byte

Một danh sách được chỉnh sửa thủ công ở định dạng .LST. Bao gồm nhiều ký tự không in được, có mã được hiển thị trong ngoặc.

?"[ESC]c[SOH] [ESC]c[ETX] [ESC]c[ENQ] "[CR]
?"[ESC]c[ETX] [ESC]c[STX] [ESC]c[ACK] "[CR]
?"[ESC]c[ENQ] [ESC]c[ACK] [ESC]c[EOT] "[CR]

Hệ điều hành của Atari ST xác định các lệnh VT52 mở rộng được sử dụng ở đây.

Đầu ra

24×248×8

đầu ra

ảnh chụp màn hình từ Steem SSE


+1 vì đã khiến tôi luyến tiếc cho ST cũ đáng tin cậy của tôi.
Wossname

16

SVG, 210 182 byte

<svg><path d="h3v3h-3" fill=#f0f/><path d="h2v2h-2" fill=#ff0/><path d="m1 1h2v2h-2" fill=#0ff/><line x2=1 stroke=red/><path d="m1 1h1v1h-1" fill=#0f0/><path d="m2 2h1v1" fill=#00f/>

Vì kích thước hoặc hình dạng của các khối màu không thành vấn đề, khá nhiều byte có thể được chơi với bố cục hơi kỳ lạ này:

bố trí svg


Tôi thực sự thích sự khéo léo của giải pháp này.
AJFaraday

16

HTML + CSS, 121 120 byte

Đoạn HTML tệ nhất tôi từng viết. Tiết kiệm một byte nhờ @Gust van de Wal

b{color:#ff0}a{color:cyan}i{color:lime}u{color:blue
<pre><body bgcolor=#f0f text=red><b>█
█<i><a>█
 █<u>

HTML + CSS, 114 byte (bán hợp lệ)

Tôi đang đặt điều này là bán hợp lệ vì màu xanh không chính xác là # 0000FF màu xanh và cũng dựa vào việc không nhấp vào liên kết.

Cảm ơn @Lynn vì ý tưởng

b{color:#ff0}i{color:lime}c{color:cyan
<pre><body bgcolor=#f0f text=red><b>█
█<i><c>█
 █<a href=x>


3
Bạn có thể bỏ qua khung đóng cuối cùng trong CSS. Ngoài ra, công việc đáng kinh ngạc (và bệnh)!
Gust van de Wal

3
Bạn có thể thay đổi tên thẻ để tránh CSS mặc định định dạng, ví dụ như <w>, <x>, <y>, và <z>.
darrylyeo

1
<a href=x>█sẽ có màu xanh theo mặc định, giúp bạn tiết kiệm một số byte CSS :)
Lynn

15

ditaa , 118 byte

/----+----+----\
|cF00|cFF0|cF0F|
+----+----+----+
|cFF0|c0F0|c0FF|
+----+----+----+
|cF0F|c0FF|c00F|
\----+----+----/

Đây là đầu ra sử dụng -Etùy chọn:

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


13

R, 89 50 48 byte

Phiên bản mới nhất:

image(matrix(c(6,4,5,2:4,1,2),3),col=rainbow(6))

Không đủ các phần tử trong vectơ để điền vào ma trận 3x3, vì vậy nó bao bọc xung quanh và sử dụng lại phần tử đầu tiên.

Phiên bản cũ:

image(matrix(c(6,4,5,2:4,1,2,6),3),col=rainbow(6))

image(matrix(c(3,5,6,2,4,5,1:3),3),col=c('red','yellow','magenta','green','cyan','blue'))

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


3
Chào mừng đến với PPCG!
Hiện thân của sự thiếu hiểu biết

1
wow đó là Rainbow Six !
Yong Quan

@alephalpha Yike, tôi không thể tin rằng tôi đã bỏ lỡ điều đó. Tôi đã đi trước và sửa phiên bản cũ nhất và số lượng nhân vật
anjama

12

Excel-VBA, 89 73 72 70 byte

Chỉnh sửa: Bạn có thể sử dụng cửa sổ ngay lập tức và phân phối với Sub/ End Subđể lưu 16 byte:

For i=1To 9:[A:C].Cells(i).Interior.ColorIndex=Mid(367648785,i,1):Next

Câu trả lời gốc:

Sub a()
For i=1To 9
[A1:C3].Cells(i).Interior.ColorIndex=Mid(367648785,i,1)
Next
End Sub

Điều này được lấy cảm hứng từ đề nghị của Neil về câu trả lời này , và là bài nộp đầu tiên của tôi!

Kết quả:

Lưới kết quả

-2 byte : Xóa số hàng trong ô - nhờ Taylor Scott !


3
Chào mừng đến với PPCG!
Johan du Toit

1
Cảm ơn bạn! Hy vọng tôi sẽ học được một số thủ thuật từ các bậc thầy :)
i_saw_drones

For i=1To 9:[A:C].Cells(i).Interior.ColorIndex=Mid(367648785,i,1):Nextcho 70
Taylor Scott

11

Perl 6 (và có thể tương tự cho nhiều ngôn ngữ) (31 byte)

{'ÿ   ÿÿÿ ÿ ÿÿ  ÿ ÿÿÿ ÿ ÿÿ  ÿ'}   # replace spaces with ASCII 00
                                  # which I can't seem to enter

Điều này tạo ra một tệp TIFF không đầu, được Photoshop tạo ra với phần mở rộng tệp .raw và được coi là hình vuông trừ khi có quy định khác tại thời điểm mở. Chơi xung quanh với độ sâu màu (nếu được phép) có thể làm giảm điều này xuống hơn nữa.


11

ffplay (ffmpeg), 93 byte

ffplay -f rawvideo -s 3x3 -pix_fmt rgb24 "data:/;base64,/wAA//8A/wD///8AAP8AAP///wD/AP//AAD/"

:

ffplay -f lavfi -i testsrc=s=3x3,geq=r=255*not(X*Y):g=255*not((X-1)*(Y-1)):b=255*not((X-2)*(Y-2))

10

TEX(MathJax), 122bytes

Golf'd:

$\def\c#1{\color{#1}{\rule{5em}{5em}}}\c{red}\c{yellow}\c{fuchsia}\\\c{yellow}\c{lime}\c{aqua}\\\c{fuchsia}\c{aqua}\c{blue}$

Ungolf'd:

$$
\def\coloredBox#1{\color{#1}{\rule{5em}{5em}}}
\coloredBox{red}
\coloredBox{yellow}
\coloredBox{fuchsia} \\
\coloredBox{yellow}
\coloredBox{lime}
\coloredBox{aqua}    \\
\coloredBox{fuchsia}
\coloredBox{aqua}
\coloredBox{blue}
$$

Chỉnh sửa:

  1. Cảm ơn @flawr đã chỉ ra cách sửa màu!

  2. 14bytes\rule{5em}{5em}

    , nhưng trông không giống nhau.

  3. Có lẽ có thể cạo thêm một vài byte bằng cách tìm tên màu giống với màu dự định.

  4. TEX'd

    RedGreenBlueRedGreenBlue.


1
Tôi nghĩ rằng màu sắc của bạn là không chính xác. Nhưng ngoài ra tôi sẽ nâng cấp bài viết của bạn nếu chỉ cho tiêu đề :)
flawr

@flawr Vâng, chúng trông khác với những câu trong câu hỏi, nhưng tôi đoán rằng nếu đó là cách hiện những màu đó bằng các tên được đưa ra trong câu hỏi, hy vọng nó sẽ đủ gần. = PTEX
Nat

1
Có vẻ như mathjax sử dụng tên màu css. Vì vậy, bạn có thể thay thế purplevới fuchsiatealvới aquagreenvới limeđiều đó sẽ đúng tôi nghĩ.
flawr

Chỉ cần lưu ý rằng: Trên đây có thể là golf thêm một chút bằng cách loại bỏ một số {}. Nhưng điều đó đã vi phạm quá nhiều nguyên tắc mã hóa sạch đối với sự tỉnh táo của tôi. = P
Nat

5
Chỉ cần lưu ý rằng cộng đồng PPCG chưa bao giờ nổi tiếng vì sự tỉnh táo của nó. Nếu bất cứ điều gì có lẽ cho việc thiếu nó.
flawr

10

Lua + LÖVE / Love2D , 186 183 byte

t={[0>1]=0,[0<1]=1}l=love g=l.graphics function l.draw()for i=1,3 do for j=1,3 do g.setColor(t[i<2 or j<2],t[i==2 or j==2],t[i>2 or j>2])g.rectangle('fill',j*10,i*10,10,10)end end end

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

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

Mã golf đầu tiên của tôi!


1
Chào mừng bạn đến với Code Golf! Công việc tốt đẹp!
AJFaraday

1
Tôi nghĩ bạn có thể sử dụng các biểu thức trong bảng chân lý của bạn : t={[0>1]=0,[0<1]=1}.
manatwork

1
@manatwork Thông minh!
Sheepolution

một người khác, rất vui được gặp bạn ở đây
Lycea

10

MATL, 44 23 21 20 19 byte

Cổng trực tiếp câu trả lời Octave của tôi với các đề xuất từ ​​@ExpiredData và @LuisMendo.

126973007Bo7B3*e0YG

thử trực tuyến


9

Octave / MATLAB , 57 56 40 byte

-17 byte nhờ @ExpiredData! Kiểm tra giải pháp thậm chí golfier của họ !

image(reshape(de2bi(126973007),[3,3,3]))

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


1
Có phải hình ảnh chỉ hoạt động thay vì imshow? Không có giấy phép Matlab nữa và tôi đang sử dụng điện thoại nên không thể kiểm tra được
Dữ liệu đã hết hạn

2
@ExpiredData Cảm ơn rất nhiều, điều đó thực sự hiệu quả!
flawr

2
Bạn có thể có thể làm điều này quá Hãy thử trực tuyến!
Dữ liệu hết hạn

1
@ExpiredData --- Thủ thuật rất hay, cảm ơn rất nhiều! :) --- tại sao bạn không đăng bài này như một câu trả lời của riêng mình?
flawr

3
Ok tôi sẽ làm điều đó
Dữ liệu hết hạn

9

Chuỗi Blueprint Factorio, 705 byte

Tôi thừa nhận, tôi chỉ đang đẩy các giới hạn của những gì được coi là một giải pháp.

0eNrdWNGOqyAQ/ReedeNo0daH/ZHNTYOW7ZJFNAi91zT99wua7ZpdaaT1pb40oQ6HOecwA3pGBde0kUwolJ8RK2vRovztjFp2FITb/1TXUJQjpmiFAiRIZUdtzYkMGyIoR5cAMXGg/1AOlz8BokIxxegA0w+6vdBVQaUJuAKQstSV5kTV0qA2dWvm1MKuZ3FecIA6lIf4BV8uwS+YeDKPXzBhPKAkUxjJPAy4AbG5QljZFBEqLOuqYGKa1Vc6YAQzE5Ss+b6gH+TETLQJeWdcUemQ/8Sk0oSPHOgjQkkPqMfT1kEYWzEsI2hpc2gtFtgfO2NkDTMjbIKnCOLv1SrCechJ1UzwSm7zKpksNVN78+xwnffOZKv2s2kS0akPJo4D10FslEd2UDVE9oLn6NU+1i01S/HaKqmkpvNl2DhkSGfJEK1Eha1DhWyWCmvZCzuHCtu7aj5asuQ7ynn99/GqT0f07BjAwXnnx3kohEW7XMPE5+OEs5+EUwdhiL4T0IVh3LNzHlMwfUoB+LTPeK19A2LPkoGbety1f46SUvH4BoLExTHxOCKe3mmIXTJ43ogGp5MlnS47soTR+GeryFyUscex+PzOu65IkPr0OrzW2wFkHn0Ar3c3eN6S4pt63NUH7GvtAn3AafTOo+yf3+jhbDcv9/1XgHz00SBAJ+NNn3uWRJDiDcDWXIf+Aya7oEk=

Sản lượng đầu ra khi được đặt trong trò chơi (sử dụng cài đặt đồ họa thấp):

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

Để chứng minh rằng đó là một giải pháp hợp lệ, bạn cần lấy mẫu lưới pixel này khớp chính xác với thông số kỹ thuật:

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

Phần còn lại của hình ảnh được phân loại là một đường viền hoặc khoảng cách, như đã nói trong câu hỏi, không thành vấn đề.



8

HTML / CSS, 278 141 137 byte

r{color:red}y{color:#ff0}m{color:#f0f}g{color:#0f0}c{color:#0ff}l{color:#00f
<pre><r><y><m><y><g><c><m><c><l>

-137 byte nhờ các bình luận viên, đáng chú ý nhất là @data
-4 byte nhờ @Einacio

Sử dụng Unicode (U + 2588) cho các "khối" và sử dụng các lớp CSS / kiểu nội tuyến để tô màu chúng.

Tôi nghĩ rằng các <font>thẻ có thể được đánh gôn nhiều hơn, tuy nhiên việc thay đổi chúng thành một thẻ ngắn hơn như <a>phá vỡ colorthuộc tính


1
Bỏ đi </td>, trình duyệt đủ thông minh để tự động thêm thẻ đóng này
Ferrybig

3
Nếu sử dụng các phần tử không dùng nữa, bạn cũng có thể chỉ định màu nền của một ô bằng cách sử dụng<td bgcolor=#f00>
Ferrybig

2
Có thể là một câu hỏi không, nhưng bạn không thể tránh sử dụng bảng và chỉ in và đi đến một dòng mới với <br>?
frarugi87

1
@ frarugi87 có - Tổng cộng 235:<span style="color:red">█<span class=a>█<span class=b>█<br><span class=a>█<span style="color:#0f0">█<span class=c>█<br><span class=b>█<span class=c>█<span style="color:#00f">█
ASCII

1
@ ASCII-only b {color: # ff0} u {color: # f0f} i {color: # 0ff} <pre> <font color = red> █ <b> █ <u> █ <b> █ <font màu = vôi> <i> <u> █ <i> <font color = blue> █
dữ liệu

7

JavaScript, 108 102 byte

console.log(`%c█%c█%c█
`.repeat(3),...[...`320251014`].map(c=>`color:#`+`f0ff00f0`.substr(c,3)))

Không có đoạn mã vì điều này chỉ hoạt động trong bảng điều khiển trình duyệt thực chứ không phải bảng điều khiển của đoạn mã. Chỉnh sửa: Cảm ơn @AJFaraday cho ảnh chụp màn hình. Giải thích: Trình duyệt cho phép tham số đầu tiên console.logbao gồm các thay thế. Sự %cthay thế lấy một tham số và áp dụng nó dưới dạng CSS (được khử trùng). Do đó, mỗi khối được tô màu bằng cách sử dụng chuỗi con thích hợp được f0ff00f0hiểu là mã màu ba chữ số.

Ví dụ về thực thi mã


1
Tôi không hiểu làm thế nào điều này hoạt động?
soái ca thủ công

1
@marshalcraft %cđược sử dụng để tạo một chuỗi định dạng, các đối số là các kiểu CSS cho văn bản sau nó
ASCII - chỉ

1
Vì vậy, điều này về cơ bản giống như phiên bản dos nhưng với trình duyệt chrome?
soái ca thủ công

1
Chỉ tò mò nhưng làm thế nào bạn tìm được chuỗi fs / 0 ngắn nhất có thể sử dụng?
Marie

2
@Marie Tôi bắt đầu bằng cách lưu ý rằng ff0ffcó chứa tất cả các màu hỗn hợp và 00f00chứa tất cả các màu tinh khiết. Nếu bạn ghép chúng, bạn sẽ có được các vị trí trùng lặp ff0f00do đó bạn có thể xóa các ký tự đầu tiên và cuối cùng. Sau đó tôi đã viết một đoạn script ngắn để kiểm tra tất cả các chuỗi 7 ký tự để đảm bảo rằng 8 là tối ưu.
Neil

7

HTML (GIF), 108 byte

Đó là cuộc chiến của các định dạng hình ảnh dựa trên web! (Có ứng cử viên TIF hoặc JPG nào ngoài đó không?)

Trả lời bởi @AC .

<img src=data:image/gif;base64,R0lGODdhAwADAMIGAAAA//8AAP8A/wD/AAD/////AAAAAAAAACwAAAAAAwADAAADBhglNSQEJAA7>


HTML (BMP), 116 115 byte

Trả lời chỉ bằng @ ASCII .

<img src=data:image/bmp;base64,Qk0+AAAAQVNDTxoAAAAMAAAAAwADAAEAGAD/AP///wD/AAAAAAAA//8A/wD//wAAAAAAAP8A////AP8AAAA>


HTML (WebP), 116 byte

Trả lời bởi @Hohmannfan .

<img src=data:image/webp;base64,UklGRjYAAABXRUJQVlA4TCoAAAAvAoAAAC8gEEjaH3qN+RcQFPk/2vwHH0QCg0I2kuDYvghLcAoX0f/4Hgc>


HTML (PNG), 151 136 135 byte

-15 byte nhờ @Hohmannfan .

<img src=data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAIAAADZSiLoAAAAFElEQVR4AWP4z8Dw/z8DEIIodB4A4D0O8pOGuTgAAAAASUVORK5CYII>


Ngoài ra, hãy xem câu trả lời CSSSVG của tôi .


3
Ý tưởng tốt nhưng .. Dường như với tôi rằng một tệp 89 byte cho hình ảnh 9 pixel là hơi quá. Có thể tự viết một tiêu đề BMP có thể đánh gôn này xuống. Nếu tôi không sai, tiêu đề tối thiểu là 26 byte, cộng với 12 của dữ liệu thực tế (3 hàng 4 pixel) có thể cắt những hình ảnh xuống đến 38 byte, mà trong base64 phương tiện 51 hoặc 52 ký tự chứ không phải 119
frarugi87

2
118 : <img src="data:image/bmp;base64,Qk0+AAAAQVNDTxoAAAAMAAAAAwADAAEAGAD/AP///wD/AAAAAAAA//8A/wD//wAAAAAAAP8A////AP8AAAA=">. Tiêu đề tệp 14 byte, tiêu đề ứng dụng 12 byte, 9 dữ liệu thực tế trên mỗi hàng (+3 để đệm cho nhiều số 4), yeah
ASCII - chỉ

2
Tôi chưa tính, nhưng tôi nghi ngờ nó <img src="data:image/gif;base64,R0lGODdhAwADAMIGAAAA//8AAP8A/wD/AAD/////AAAAAAAAACwAAAAAAwADAAADBhglNSQEJAA7">ngắn hơn
AC

2
Đây là một tệp png nhỏ hơn 15 byte khi mã hóa base64:iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAIAAADZSiLoAAAAFElEQVR4AWP4z8Dw/z8DEIIodB4A4D0O8pOGuTgAAAAASUVORK5CYII=
Hohmannfan

2
Để tiếp tục cuộc chiến định dạng, đây là một giải pháp WebP không mất mát. Tôi không thể cắt nó xuống nữa mà không vi phạm thông số kỹ thuật, vì vậy nó bị BMP đánh bại trong phạm vi 116 byte. <img src=data:image/webp;base64,UklGRjYAAABXRUJQVlA4TCoAAAAvAoAAAC8gEEjaH3qN+RcQFPk/2vwHH0QCg0I2kuDYvghLcAoX0f/4Hgc>
Hohmannfan

6

dc (trên xterm), 64 byte

Fi16[AP]sF36dD6r31 101dD6rD1[1CP61P[38;5;]Pn[mX]Pz3%0=Fz0<M]dsMx

Bạn sẽ chỉ nhận được một loạt các mã thoát kỳ lạ thay vì màu sắc, nhưng bạn vẫn có thể thử trực tuyến!

Theo hiểu biết của tôi, 16 màu ANSI cơ bản là miễn phí để được giải thích tuy nhiên thiết bị đầu cuối muốn. Mặt khác, 216 màu trong khối màu xterm có giá trị RGB rõ ràng. Tôi đang sử dụng các mã này và in một lưới Xs:

bó đầy màu sắc 'x'

Đầu tiên chúng ta đặt cơ số đầu vào thành cơ sở 15 với Fi. Điều này có giá hai byte, nhưng trả lại ba, vì vậy ... mức tăng ròng của một byte (và mất một lượng lớn ol 'về khả năng đọc). Tiếp theo, chúng tôi đang cố gắng đưa các giá trị màu của chúng tôi lên ngăn xếp. Trong thập phân, điều này sẽ là 21 51 201 51 46 226 201 226 196, nhưng chúng ta đang ở chế độ lập dị nên nó sẽ như vậy 16 36 D6 36 31 101 D6 101 D1. Chúng tôi loại bỏ một trong các khoảng trắng bằng cách xiên vào một macro mà chúng tôi cần xác định tại một số điểm, [AP]sF(chỉ đơn giản là in một nguồn cấp dữ liệu). Chúng ta có thể thu nhỏ 36 D6 36101 D6 101bằng cách đặt giá trị đầu tiên trên ngăn xếp, sao chép nó, đặt giá trị thứ hai và sau đó hoán đổi ( 36dD6r, 101dD6r).

Macro Mxử lý việc in ấn và không có điều gì. 1CPin ký tự thoát. Chân đế được sử dụng để phân định các chuỗi và theo như tôi biết là không thể thoát được, vì vậy chúng ta cũng cần in dấu ngoặc với giá trị ASCII 61P. [38;5;]Plà 'đặt màu nền trước từ mã danh sách được đánh số'. nin giá trị từ đầu ngăn xếp w / oa dòng mới, xuất hiện nó. [mX]Pkết thúc mã và in một 'X'. z3%0=Fkiểm tra độ sâu ngăn xếp mod 3, chạy macro nguồn cấp dữ liệu của chúng tôi Fkhi cần thiết. z0<Mtiếp tục Mchạy miễn là có công cụ trên ngăn xếp. dsMxchạy.

Lưu ý rằng nếu bạn chạy cái này trong dc trong một xterm, nó sẽ để lại màu nền trước của bạn là màu xanh. 1CP61P74P(đầu vào hiển thị trong ảnh chụp màn hình) nên đặt lại này.


6

Rùa rùa, 45 khối

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

Làm thế nào về chúng ta chơi một trò chơi nhỏ để tìm công cụ vô lý nhất cho công việc?

Đầu ra:

Đầu ra vẻ vang của phần lập trình lộng lẫy này

Chương trình (như một ảnh chụp màn hình cho dị giáo bổ sung):

Chương trình như một ảnh chụp màn hình cho dị giáo bổ sung

Lưu ý: Các khối màu xám cũng được tính vào số liệu.


1
Tôi muốn đó là một thử thách PCG tiêu chuẩn! Thay vào đó, nó xảy ra hữu cơ trên một số câu đố golf mã
AJFaraday

5

Node.js, 79 byte

require('fs').writeFile(a='P',a+[...'3331100110101110010011101011001'].join` `)

Tạo một tệp có tên "P" ở định dạng PPM chứa lưới màu.


5

TI-Basic, x byte (sẽ ghi điểm khi tôi có thể)

Lưu ý: bộ lọc nội dung đang chặn tôi tìm kiếm kích thước mã thông báo cho từng lệnh này. Nếu bất cứ ai muốn ghi bàn cho tôi, đi cho nó.

TextColor(11
Text(0,0,"0"
TextColor(19
Text(0,2,"0"
Text(2,0,"0"
TextColor(13
Text(4,0,"0"
Text(0,4,"0"
TextColor(14
Text(2,2,"0"
TextColor(18
Text(2,4,"0"
Text(4,2,"0"
TextColor(17
Text(4,4,"0"

Cái nhìn này thực sự xấu trên màn hình máy tính nhỏ của tôi. Nhưng này, hình dạng không thành vấn đề: ^)

Sản lượng chơi gôn: Được sửa đổi cho sản lượng lớn hơn 8 lần:

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



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



TI-BASIC, x byte

Sử dụng Pxl-On thay vì Text:

Pxl-On(0,0,11
Pxl-On(0,1,19
Pxl-On(0,2,13
Pxl-On(1,0,19
Pxl-On(1,1,14
Pxl-On(1,2,18
Pxl-On(2,0,13
Pxl-On(2,1,18
Pxl-On(2,2,17

Đầu ra: Thổi lên ~ 11x:

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



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


Đó là 180 ký tự, không bao gồm ngắt dòng. Tôi không chắc chắn làm thế nào / nếu ngắt dòng được tính trong mã golf.
Nat

4
Có, nhưng TI-BASIC là ngôn ngữ được mã hóa - ví dụ: trình thông dịch xem TextColorlà 2 byte, không phải 9 như bạn mong đợi @Nat
Benjamin Urquhart

4

C ++, SFML, 177 byte

#include<SFML/Graphics.hpp>
int d[]={255,65535,0xFF00FF,65535,65280,0xFFFF00,0xFF00FF,0xFFFF00,0xFF0000};void f(){sf::Image g;g.create(3,3,(sf::Uint8*)d);g.saveToFile("a.jpg");}

Sử dụng sf::Image::create(int,int,unsigned char*)phương pháp để tạo một hình ảnh với các giá trị rgb trong đó


Bạn có thể tắt một byte bằng cách viết 0xFF0000dưới dạng 255<<16.
Broxzier

1
Nói thêm một chút, bạn có thể lưu 13 byte bằng cách xác định các giá trị màu R / G / B trong các biến trước mảng:int b=255<<16,g=65280,r=255,d[]={r,g|r,b|r,g|r,g,b|g,b|r,b|g,b};
Broxzier

4

C #, 248 204 198 byte

class P{static void Main(){for(int i=0;i<12;i++){foreach(dynamic n in Enum.GetValues(typeof(ConsoleColor)))if((""+n)[0]=="RYMRYGCRMCBR"[i])Console.BackgroundColor=n;Console.Write(i%4<3?" ":"\n");}}}

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


4

BASIC C64, 106 byte

0 POKE53281,0
1 DATA144,28,158,156,144,13,158,30,159,144,13,156,159,31,144
2 READA:PRINTCHR$(A)+"o";:GOTO2

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


3

Ngôn ngữ Wolfram (Mathicala), 72 byte

Grid@Partition[RGBColor/@Unitize[Total/@Tuples[IdentityMatrix@3,{2}]],3]

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

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.