สร้างกริดสี RGB


47

นี้! เป็นตารางสี RGB ...

ตาราง RGB พื้นฐาน

โดยทั่วไปมันเป็นเมทริกซ์สองมิติที่:

  • แถวแรกและคอลัมน์แรกเป็นสีแดง
  • แถวที่สองและคอลัมน์ที่สองเป็นสีเขียว
  • แถวที่สามและคอลัมน์ที่สามเป็นสีน้ำเงิน

นี่คือสีที่อธิบายแบบกราฟิกโดยใช้ตัวอักษร R, G และ B

ไดอะแกรมแถวและคอลัมน์

นี่คือวิธีที่เราคำนวณสีของแต่ละพื้นที่บนตารางที่คำนวณ

  • แดง + แดง = แดง (# FF0000)
  • เขียว + เขียว = เขียว (# 00FF00)
  • น้ำเงิน + น้ำเงิน = น้ำเงิน (# 0000FF)
  • แดง + เขียว = เหลือง (# FFFF00)
  • แดง + น้ำเงิน = ม่วง (# FF00FF)
  • เขียว + น้ำเงิน = น้าน (# 00FFFF)

ความท้าทาย

  • เขียนโค้ดเพื่อสร้างกริดสี RGB
  • มันเป็นรหัสกอล์ฟดังนั้นพยายามทำในจำนวนไบต์ที่น้อยที่สุด
  • ใช้ภาษาการเขียนโปรแกรมหรือภาษามาร์กอัปเพื่อสร้างกริดของคุณ
  • สิ่งที่ฉันสนใจ:
    • ผลลัพธ์ควรแสดงตาราง RGB แบบกราฟิกด้วยสีที่กำหนดไว้
  • สิ่งที่ฉันไม่สนใจ:
    • หากผลลัพธ์เป็นรูปภาพ, HTML, SVG หรือมาร์กอัปอื่น ๆ
    • ขนาดหรือรูปร่างของบล็อคสี
    • เส้นขอบระยะห่าง ฯลฯ ระหว่างหรือรอบ ๆ บล็อก
    • ไม่จำเป็นต้องมีป้ายกำกับที่บอกคุณว่าสีของแถวและคอลัมน์ควรเป็นเช่นไร

2
เราสามารถส่งออกวัตถุผู้วิเศษที่มีภาษาของเราเช่นBitmapวัตถุใน C #?
ศูนย์รวมแห่งความไม่รู้

1
@EmbodimentofIgnorance ฟังดูดีสำหรับฉัน
AJFaraday

11
ฉันรอวิธีแก้ปัญหาในPiet
manassehkatz

4
@manassehkatz เป็นไปได้ไหมที่การเข้ารหัสข้อมูลจะดีกว่าการใช้ข้อมูล?
AJFaraday

3
ไม่ใช่ว่ามันจะสำคัญ แต่ฉันใช้cyanและmagentaแทนการใช้น้านและสีม่วงน้า (หรืออย่างอื่น) เท่าที่ผมรู้ว่าเหล่านี้เป็นข้อตกลงอย่างเป็นทางการใช้ในการพิมพ์หรือรูปแบบสี subtractive เช่นCMYK
Arnauld

คำตอบ:


34

Bash, 44

  • บันทึก 2 ไบต์ด้วย @NahuelFouilleul
  • บันทึก 2 ไบต์ด้วย @manatwork
printf "${f=^[[3%dm.}$f$f
" 1 3 5 3 2 6 5 6 4

ที่นี่บล็อกเป็น.ตัวละคร ^[เป็นอักขระ ASCII escape ตามตัวอักษร (0x1b)

ป้อนคำอธิบายรูปภาพที่นี่

คุณสามารถสร้างสคริปต์นี้ขึ้นใหม่ดังนี้:

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

11
ห่า? โปรดอธิบาย :)
ข้อบกพร่อง

1
สามารถบันทึก 2 ไบต์โดยใช้การขยายตัวของเชลล์printf ${f=\\e[3%dm.}$f$f\\n 1 3 5 3 2 6 5 6 4
Nahuel Fouilleul

1
อันนี้ทำให้วันของฉันสดใสจริงๆขอบคุณ!
AJFaraday

4
printf \\e[3%dm. 1'ขยาย\\e[31m.ซึ่งเป็นรหัสหลบหนี ANSI สำหรับสีแดงและอื่น ๆ และ.เป็นตัวละครที่จะพิมพ์
Fredrik Pihl

3
ดำเนินการต่อตามข้อเสนอแนะของ @ NahuelFouilleul ให้พูดสองครั้ง: printf "${f=^[[3%dm.}$f$f␤" 1 3 5 3 2 6 5 6 4( ^[ตัวอักษรที่มีตัวอักษรตามตัวอักษร = 1 ไบต์และ line อักขระบรรทัดใหม่ตามตัวอักษร = 1 ไบต์)
จัดการ

26

ชุดประกอบ 8088, IBM PC DOS,  44  43 ไบต์

รายการ:

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

สิ่งนี้ใช้INT 10HบริการวิดีโอIBM PC BIOS เพื่อเขียนกริดสีไปยังหน้าจอ น่าเสียดายที่วิธีเดียวในการเขียนแอตทริบิวต์สีที่ระบุต้องใช้การเขียนรหัสเพื่อวางเคอร์เซอร์ในตำแหน่งที่ถูกต้องถัดไปดังนั้นจึงมีรหัสพิเศษมากมายสำหรับสิ่งนั้น

นี่คือผลลัพธ์ที่ทำงานบน IBM PC CGA (ในโหมดข้อความขนาด 40x25 เพื่อทำให้ใหญ่ขึ้น)

ป้อนคำอธิบายรูปภาพที่นี่

ดาวน์โหลดและทดสอบRGBGRID.COMสำหรับ DOS


1
จะใช้งานได้ใน dos หรือไม่ แต่น่าจะดีถ้าทำ
marshal craft

@ มาร์แชลล์ใช่ในความเป็นจริงมันจะทำงานใน DOS หรือใช้โปรแกรมจำลอง DOS เช่น DOSBox, pcjs.org ฯลฯ ฉันได้เพิ่มลิงก์เพื่อดาวน์โหลดไฟล์ปฏิบัติการเพื่อให้คุณสามารถลองได้
640KB

Windows มาพร้อมกับตัวเลียนแบบ dos ที่ จำกัด ซึ่งตอนนี้อาจเรียกว่า command prompt ซึ่งฉันน่าจะพูดได้ว่ามันเจ๋งถ้ามันทำงานกับ cmd หรือ PowerShell haha
เรือจอมพลประดิษฐ์

1
@marshalcraft คุณถูกต้อง แต่เนื่องจาก DOS ใช้สำหรับปฏิบัติการแบบ 16 บิตและหากคุณมี Windows รุ่น 32 บิตคุณควรใช้งานจริงเนื่องจากมีสภาพแวดล้อมรันไทม์ 16 บิต อย่างไรก็ตาม Windows รุ่น 64 บิตจะไม่ทำงานเนื่องจากมีเพียงรันไทม์ 32 บิต
640KB

1
พระเจ้านี่เป็นคำตอบที่ยอดเยี่ยม
Samy Bencherif


18

รหัสเครื่อง 80386, IBM PC DOS, 38 ไบต์

ฐานสิบหก:

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

สเกลเอาต์พุตจาก dosbox:

ป้อนคำอธิบายรูปภาพที่นี่


โปรดทราบว่าmov al, 13hไม่ถูกต้องเว้นแต่จะได้รับการรับรองจาก DOSBox ว่ามีah = 0จุดเข้าใช้งานของโปรแกรม
Margaret Bloom

@MargaretBloom axe คือ 0เมื่อเริ่มต้นแอปพลิเคชัน com ใน ms dos
Iłya Bursov

ขอบคุณIłyaดีที่รู้!
Margaret Bloom

18

Excel VBA (หน้าต่างทันที), 80 ไบต์

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

Excel VBA (ฟังก์ชั่น), 96 ไบต์

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

ไม่ใช่เครื่องมือที่น่ากลัวสำหรับงาน ... ฉันขอขอบคุณข้อเท็จจริงที่ว่า Excel แสดงตารางแล้วดังนั้นจึงเป็นเรื่องของการตั้งค่าสีพื้นหลัง

ตาราง Excel สี

ให้เครดิตกับ @Neil สำหรับการแนะนำให้ใช้ColorIndexแทนColorการประหยัด 43 ไบต์

-21 ไบต์ขอบคุณ @Keeta

-16 ไบต์ขอบคุณ @Chronocidal สำหรับการแนะนำ "หน้าต่างทันที"

-2 ไบต์ขอบคุณ @i_saw_drones

การเปลี่ยนแปลงมากมายจากการส่งต้นฉบับของฉัน :)


1
คุณน่าจะทำได้ดีกว่าColorIndexเพราะมันมีค่าตั้งแต่ 3 ถึง 8 ตรงนี้ซึ่งคุณสามารถเข้ารหัสในสตริงหรืออะไรก็ได้
Neil

@Neil - แน่นอน :) ฉันสามารถทำให้สั้นลงได้เล็กน้อยโดยใช้สิ่งนั้น ขอบคุณสำหรับทิป.
dana

ฉันไม่เห็นอะไรเลยที่ทำให้คุณไม่สามารถเปลี่ยนสิ่งนี้เป็น Sub F () และ End Sub เพื่อการประหยัดมากขึ้น
Keeta

1
อย่าทำให้เป็นฟังก์ชันและเรียกใช้สิ่งนี้ในหน้าต่างทันทีเพื่อปล่อย 21 ไบต์: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
นอกจากนี้คุณยังสามารถลบเครื่องหมายคำพูดออกจากสตริงได้ VBA จะบังคับให้ตัวเลขเป็นสตริงโดยอัตโนมัติ
i_saw_drones

16

GFA พื้นฐาน 2.02 (Atari ST) 48 ไบต์

รายการที่แก้ไขด้วยตนเองในรูปแบบ. LST มีอักขระที่ไม่สามารถพิมพ์ได้จำนวนมากซึ่งมีรหัสแสดงอยู่ในวงเล็บ

?"[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]

ระบบปฏิบัติการของ Atari ST กำหนดคำสั่ง VT52 แบบขยายซึ่งใช้ที่นี่

เอาท์พุต

ผลลัพธ์คือบล็อกของพิกเซล (9 ช่องว่างอักขระพิกเซล)24×248×8

เอาท์พุต

สกรีนช็อตจากSteem SSE


+1 ที่ทำให้ฉันคิดถึงทุกสิ่งสำหรับ ST เก่าที่ไว้ใจได้ของฉัน
Wossname

16

SVG, 210 182 ไบต์

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

เนื่องจากขนาดหรือรูปร่างของบล็อคสีนั้นไม่สำคัญเลยสักสองสามไบต์ก็สามารถตีด้วยรูปแบบแปลก ๆ นี้ได้:

เค้าโครง svg


ฉันชอบความเฉลียวฉลาดของโซลูชันนี้จริงๆ
AJFaraday

16

HTML + CSS, 121 120 ไบต์

HTML ที่แย่ที่สุดที่ฉันเคยเขียน หนึ่งไบต์บันทึกด้วย @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 ไบต์ (ถูกต้องกึ่ง)

ฉันวางสิ่งนี้เป็นแบบกึ่งถูกต้องเพราะสีน้ำเงินไม่ตรง # 0000FF สีน้ำเงินและยังขึ้นอยู่กับว่าไม่ได้คลิกที่ลิงค์

ขอบคุณ @Lynn สำหรับความคิด

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


3
คุณสามารถละเว้นวงเล็บปิดล่าสุดใน CSS นอกจากนี้ยังมีการทำงาน (และน่าเบื่อ) ที่น่าทึ่ง!
Gust van de Wal

3
คุณสามารถเปลี่ยนชื่อแท็กเพื่อหลีกเลี่ยง CSS เริ่มต้นการจัดรูปแบบเช่น<w>, <x>, และ<y> <z>
darrylyeo

1
<a href=x>█จะเป็นสีฟ้าตามค่าเริ่มต้นคุณประหยัดไบต์ของ CSS :) บาง
ลินน์

15

ditaa , 118 ไบต์

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

นี่คือเอาต์พุตโดยใช้-Eตัวเลือก:

ป้อนคำอธิบายรูปภาพที่นี่


13

R, 89 50 48 ไบต์

รุ่นใหม่ล่าสุด:

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

องค์ประกอบไม่เพียงพอในเวกเตอร์เพื่อเติมเมทริกซ์ 3x3 ดังนั้นจึงล้อมรอบและนำองค์ประกอบแรกมาใช้ใหม่

รุ่นเก่า:

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

ป้อนคำอธิบายรูปภาพที่นี่


3
ยินดีต้อนรับสู่ PPCG!
ศูนย์รวมแห่งความไม่รู้

1
ว้าวมันคือRainbow Six !
Yong Quan

@alephalpha Yikes ฉันไม่อยากจะเชื่อเลยว่าฉันพลาด ฉันไปข้างหน้าและแก้ไขเวอร์ชันและจำนวนตัวละครที่เก่าที่สุด
อันยามา

12

Excel-VBA, 89 73 72 70 ไบต์

แก้ไข: คุณสามารถใช้หน้าต่างทันทีและแจกจ่ายด้วยSub/ End Subเพื่อบันทึก 16 ไบต์:

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

คำตอบเดิม:

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

สิ่งนี้ได้รับแรงบันดาลใจจากข้อเสนอแนะของนีลในคำตอบนี้และเป็นข้อเสนอแรกของฉัน!

ผลลัพธ์:

ตารางผลลัพธ์

-2 ไบต์ : การลบหมายเลขแถวของเซลล์ - ขอบคุณTaylor Scott !


3
ยินดีต้อนรับสู่ PPCG!
Johan du Toit

1
ขอขอบคุณ! หวังว่าฉันจะได้เรียนรู้เคล็ดลับบางอย่างจากเหล่าอาจารย์ :)
i_saw_drones

For i=1To 9:[A:C].Cells(i).Interior.ColorIndex=Mid(367648785,i,1):Nextสำหรับ 70
Taylor Scott

11

Perl 6 (และอาจคล้ายกันในหลายภาษา) (31 ไบต์)

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

เอาต์พุตนี้เป็นไฟล์ TIFF ที่ไม่มีส่วนหัวซึ่งเคยสร้างโดย Photoshop ที่มีนามสกุลไฟล์. raw และสันนิษฐานว่าเป็นรูปสี่เหลี่ยมเว้นแต่จะระบุไว้เป็นอย่างอื่นเมื่อเปิด การเล่นโดยใช้ความลึกของสี (หากได้รับอนุญาต) สามารถลดสิ่งนี้ลงได้อีก


11

ffplay (ffmpeg), 93 ไบต์

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

การแก้ไข:

  1. ขอบคุณ@flawrสำหรับการชี้วิธีแก้ไขสี!

  2. สามารถโกนโดยแทนที่ด้วยซึ่งจะดูเหมือน14bytes\rule{5em}{5em}

    แต่ดูไม่เหมือนกันเลย

  3. อาจโกนทิ้งอีกสองสามไบต์โดยการค้นหาชื่อสีที่ยอมรับได้คล้ายกับสีที่ต้องการ

  4. เพียงเพื่อแสดงให้เห็นว่าเวอร์ชันนี้เหมาะสมเป็นอย่างไร:TEX'd

    RedGreenBlueRedGreenBlue.


1
ฉันคิดว่าสีของคุณไม่ถูกต้อง แต่นอกจากนั้นฉันก็จะโพสต์โพสต์ของคุณถ้าเฉพาะชื่อ :)
ข้อบกพร่อง

@flawr ใช่พวกเขาดูแตกต่างจากที่อยู่ในคำแถลงคำถาม แต่ฉันคิดว่าถ้านั่นเป็นวิธีที่แสดงสีเหล่านั้นด้วยชื่อที่ให้ไว้ในคำสั่งคำถามหวังว่ามันจะอยู่ใกล้พอ = PTEX
Nat

1
ดูเหมือนว่า mathjax จะใช้ชื่อสี css ดังนั้นคุณสามารถแทนที่purpleด้วยfuchsiaและtealด้วยaquaและgreenกับlimeสิ่งนั้นจะถูกต้องผมคิดว่า
ข้อบกพร่อง

เพียงเพื่อทราบ: ข้างต้นอาจจะ golf'd อีกเล็กน้อยโดยการเอาบางส่วน{}ของ แต่นั่นเป็นการละเมิดหลักการเข้ารหัสที่สะอาดเกินไปสำหรับสติของฉัน = P
Nat

5
เพิ่งทราบว่าชุมชน PPCG ไม่เคยมีชื่อเสียงในด้านความมีสติ หากมีสิ่งใดที่อาจขาดไป
ข้อบกพร่อง

10

Lua + LÖVE / Love2D , 186 183 ไบต์

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

ลองออนไลน์!

ป้อนคำอธิบายรูปภาพที่นี่

รายการรหัสกอล์ฟครั้งแรกของฉัน!


1
ยินดีต้อนรับสู่ Code Golf! เยี่ยมมาก!
AJFaraday

1
t={[0>1]=0,[0<1]=1}ฉันคิดว่าคุณสามารถใช้นิพจน์ในตารางความจริงของคุณ:
จัดการ

1
@ การจัดการสมาร์ท!
Sheepolution

อีกคนหนึ่งยินดีที่ได้พบคุณที่นี่
Lycea


9

อ็อกเทฟ / MATLAB , 57 56 40 ไบต์

-17 ไบต์ขอบคุณ @ExpiredData! ลองดูวิธีแก้ปัญหาของนักกอล์ฟของพวกเขา!

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

ลองออนไลน์!


1
รูปภาพใช้งานได้แทนที่จะแสดงผลหรือไม่ ไม่มีใบอนุญาต Matlab อีกต่อไปและฉันอยู่ในโทรศัพท์จึงไม่สามารถทดสอบได้
ข้อมูลหมดอายุเมื่อ

2
@ ExpiredData ขอบคุณมากมันใช้งานได้จริง!
ข้อบกพร่อง


1
@ ExpiredData --- เคล็ดลับดีมากขอบคุณมาก! :) --- ทำไมคุณไม่โพสต์สิ่งนี้เป็นคำตอบของตัวเอง?
ข้อบกพร่อง

3
ตกลงฉันจะทำเช่นนั้น
ข้อมูลหมดอายุ

9

สตริงตัวพิมพ์เขียวของ Factorio 705 ไบต์

ฉันยอมรับว่าฉันแค่ผลักดันขีด จำกัด ของสิ่งที่นับว่าเป็นทางออก

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

เอาต์พุตที่สร้างเมื่อวางในเกม (ใช้การตั้งค่ากราฟิคต่ำ):

ป้อนคำอธิบายรูปภาพที่นี่

ในการพิสูจน์ว่าเป็นโซลูชันที่ถูกต้องคุณต้องสุ่มตารางของพิกเซลนี้ซึ่งตรงกับข้อกำหนดอย่างแน่นอน:

ป้อนคำอธิบายรูปภาพที่นี่

รูปภาพที่เหลือถูกจัดประเภทเป็นเส้นขอบหรือการเว้นวรรคซึ่งดังที่กล่าวไว้ในคำถามไม่สำคัญ



8

HTML / CSS, 278 141 137 ไบต์

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 ไบต์ขอบคุณผู้แสดงความคิดเห็นส่วนใหญ่ที่โดดเด่น @data
-4 ไบต์ขอบคุณ @Einacio

ใช้ Unicode (U + 2588) สำหรับ "บล็อก" และใช้ CSS คลาส / สไตล์อินไลน์เพื่อระบายสี

ฉันคิดว่า<font>แท็กสามารถเล่นกอล์ฟได้มากขึ้น แต่การเปลี่ยนเป็นแท็กที่สั้นกว่าเช่น<a>แบ่งcolorคุณสมบัติ


1
ออกจาก</td>เบราว์เซอร์นั้นฉลาดพอที่จะเพิ่มแท็กปิดนี้โดยอัตโนมัติ
Ferrybig

3
หากใช้องค์ประกอบที่เลิกใช้คุณสามารถระบุสีพื้นหลังของเซลล์ที่ใช้<td bgcolor=#f00>
Ferrybig

2
อาจเป็นคำถาม noob แต่คุณไม่สามารถหลีกเลี่ยงการใช้ตารางและพิมพ์█และไปที่บรรทัดใหม่ด้วย <br>
frarugi87

1
@ frarugi87 ใช่ - 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">█
เท่านั้น

1
@ ASCII-only b {color: # ff0} u {color: # f0f} i {color: # 0ff} <pre> <font color = red> █ <b> █ <u> █ <b> █ <สีตัวอักษร = มะนาว> █ <i> █ <u> █ <i> █ <สีตัวอักษร = สีน้ำเงิน> █
ข้อมูล

7

JavaScript, 108 102 ไบต์

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

ไม่มีข้อมูลโค้ดเพราะจะทำงานในคอนโซลเบราว์เซอร์จริงเท่านั้นและไม่ใช่ตัวอย่างข้อมูลของคอนโซล แก้ไข: ขอบคุณ @AJFaraday สำหรับสกรีนช็อต คำอธิบาย: เบราว์เซอร์อนุญาตให้พารามิเตอร์แรกของconsole.logรวมถึงการแทนที่ การ%cทดแทนใช้พารามิเตอร์และใช้เป็น (sanitized) CSS แต่ละบล็อกจึงมีสีโดยใช้สตริงย่อยที่เหมาะสมของf0ff00f0การตีความว่าเป็นรหัสสีสามหลักหกหลัก

ตัวอย่างของการเรียกใช้โค้ด


1
ฉันไม่เข้าใจว่ามันทำงานอย่างไร
งานหัตถกรรมจอมพล

1
@marshalcraft %cใช้เพื่อสร้างสตริงรูปแบบอาร์กิวเมนต์เป็นสไตล์ CSS สำหรับข้อความหลังจากนั้น
ASCII เท่านั้นเท่านั้น

1
ดังนั้นโดยทั่วไปแล้วเป็นรุ่น dos แต่มีเบราว์เซอร์ chrome หรือไม่
งานฝีมือจอมพล

1
แค่อยากรู้อยากเห็น แต่ทำไมคุณถึงค้นหาห่วงโซ่ที่สั้นที่สุดของ fs / 0s เพื่อใช้?
มารี

2
@ มารีฉันเริ่มโดยสังเกตว่าff0ffมีสีผสม00f00ทั้งหมดและมีสีล้วนทั้งหมด หากคุณต่อพวกเขาเข้าด้วยกันคุณจะได้รับตำแหน่งที่ซ้ำกันff0และf00คุณสามารถลบอักขระตัวแรกและตัวสุดท้ายออกได้ จากนั้นฉันก็เขียนสคริปต์สั้น ๆ เพื่อตรวจสอบสายอักขระ 7 ตัวเพื่อให้แน่ใจว่า 8 ตัวนั้นดีที่สุด
Neil

7

HTML (GIF), 108 ไบต์

มันเป็นการต่อสู้ของรูปแบบภาพบนเว็บ! (ผู้เข้าประกวด TIF หรือ JPG คนใดบ้าง?)

คำตอบโดย@AC

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


HTML (BMP), 116 115 ไบต์

คำตอบโดย@ ASCII เท่านั้น

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


HTML (WebP), 116 ไบต์

คำตอบโดย@Hohmannfan

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


HTML (PNG), 151 136 135 ไบต์

-15 ไบต์ขอบคุณที่@Hohmannfan

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


ดูคำตอบCSSและSVGของฉันด้วย


3
ความคิดที่ดี แต่ .. สำหรับฉันแล้วดูเหมือนว่าไฟล์ 89 ไบต์สำหรับภาพขนาด 9 พิกเซลนั้นมากเกินไป บางทีการเขียนส่วนหัว BMP ด้วยตนเองอาจทำให้เกิดปัญหา ถ้าฉันไม่ผิดส่วนหัวขั้นต่ำเปล่าคือ 26 ไบต์บวก 12 ของข้อมูลจริง (3 แถว 4 พิกเซล) สามารถตัดภาพให้เหลือ 38 ไบต์ซึ่งใน base64 หมายถึง 51 หรือ 52 ตัวอักษรมากกว่า 119
frarugi87

2
<img src="data:image/bmp;base64,Qk0+AAAAQVNDTxoAAAAMAAAAAwADAAEAGAD/AP///wD/AAAAAAAA//8A/wD//wAAAAAAAP8A////AP8AAAA=">118: ส่วนหัวไฟล์ 14 ไบต์, ส่วนหัวของแอปพลิเคชัน 12 ไบต์, 9 ข้อมูลจริงต่อแถว (+3 ไปยังหลายเท่าของ 4), ใช่
ASCII- เท่านั้น

2
ฉันไม่ได้นับ แต่ฉันคิดว่า<img src="data:image/gif;base64,R0lGODdhAwADAMIGAAAA//8AAP8A/wD/AAD/////AAAAAAAAACwAAAAAAwADAAADBhglNSQEJAA7">มันสั้นกว่า
เอซี

2
นี่คือไฟล์ png ที่เล็กลง 15 ไบต์เมื่อมีการเข้ารหัส base64:iVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAIAAADZSiLoAAAAFElEQVR4AWP4z8Dw/z8DEIIodB4A4D0O8pOGuTgAAAAASUVORK5CYII=
Hohmannfan

2
หากต้องการใช้รูปแบบการต่อสู้ต่อไปนี้เป็นวิธีแก้ปัญหา WebP ที่ไม่มีการสูญเสีย ฉันไม่สามารถตัดมันได้อีกต่อไปโดยไม่ละเมิดข้อกำหนดดังนั้นจึงตี BMP อย่างแคบที่ 116 ไบต์ <img src=data:image/webp;base64,UklGRjYAAABXRUJQVlA4TCoAAAAvAoAAAC8gEEjaH3qN+RcQFPk/2vwHH0QCg0I2kuDYvghLcAoX0f/4Hgc>
Hohmannfan

6

dc (บน xterm), 64 ไบต์

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

คุณจะได้รับรหัสหลบหลีกที่แปลกประหลาดแทนสี แต่คุณยังสามารถลองออนไลน์ได้!

จากความเข้าใจของฉันสี ANSI พื้นฐาน 16 สีสามารถตีความได้ฟรี แต่เทอร์มินัลต้องการ ในทางตรงกันข้าม 216 สีในคิวบ์สี xterm มีค่า RGB ชัดเจน ฉันกำลังใช้รหัสเหล่านี้และการพิมพ์ตารางของX:

พวงของสีสัน

ครั้งแรกที่เราตั้งกี่ป้อนข้อมูลไปยังฐาน Fi15 ค่าใช้จ่ายนี้สองไบต์ แต่ให้สามกลับดังนั้น ... กำไรสุทธิของไบต์ (และการสูญเสีย ol ใหญ่ในการอ่าน) ต่อไปเรากำลังพยายามหาค่าสีของเราลงบนสแต็ก ในทศนิยมนี้จะเป็นแต่เราอยู่ในโหมดที่แปลกประหลาดจึงเป็นไปได้21 51 201 51 46 226 201 226 196 16 36 D6 36 31 101 D6 101 D1เรากำจัดช่องว่างหนึ่งช่องด้วยการ slotting ในมาโครที่เราจำเป็นต้องกำหนดในบางจุด[AP]sF(ซึ่งพิมพ์เพียงการป้อนบรรทัด) เราสามารถย่อขนาด36 D6 36และ101 D6 101วางค่าแรกลงบนสแต็กทำซ้ำวางค่าที่สองแล้วสลับ ( 36dD6r, 101dD6r)

มาโครMจัดการการพิมพ์และอะไรก็ตาม 1CPพิมพ์ตัวละครหนี วงเล็บจะใช้ในการกำหนดเขตสตริงและเท่าที่ผมรู้ว่าไม่ได้ escapable ดังนั้นเราจึงจำเป็นต้องพิมพ์วงเล็บที่มีค่า ASCII 61Pเป็นอย่างดี [38;5;]Pคือรหัส 'การตั้งค่าสีพื้นหน้าจากรายการหมายเลข' nพิมพ์ค่าจากด้านบนสุดของสแต็กที่มีขึ้นบรรทัดใหม่โดย popping [mX]Pสิ้นสุดรหัสและพิมพ์ 'X' z3%0=Fตรวจสอบ stack depth mod 3 โดยเรียกใช้มาโครไลน์ฟีดของเราFเมื่อจำเป็น z0<Mช่วยให้การMทำงานตราบใดที่มีสิ่งที่อยู่บนสแต็ค dsMxวิ่ง.

โปรดทราบว่าถ้าคุณเรียกใช้สิ่งนี้ใน dc ใน xterm มันจะทำให้สีพื้นหน้าของคุณเป็นสีน้ำเงิน 1CP61P74P(อินพุตที่แสดงในภาพหน้าจอ) ควรรีเซ็ตสิ่งนี้


6

เต่าเต่าบล็อก 45 บล็อก

ลองออนไลน์!

เราเล่นเกมเล็ก ๆ เพื่อค้นหาเครื่องมือที่ไร้สาระที่สุดสำหรับงานนี้หรือไม่?

เอาท์พุท:

ผลลัพธ์ที่ยอดเยี่ยมของการเขียนโปรแกรมเส็งเคร็งชิ้นนี้

โปรแกรม (เป็นภาพหน้าจอสำหรับบาปเพิ่มเติม):

โปรแกรมเป็นภาพหน้าจอสำหรับบาปเพิ่มเติม

หมายเหตุ: บล็อกที่เป็นสีเทาจะถูกนับรวมในเมตริก


1
ฉันชอบที่จะเป็นความท้าทาย PCG มาตรฐาน! มันเกิดขึ้นอย่างเป็นธรรมชาติในปริศนากอล์ฟรหัส
AJFaraday

5

Node.js, 79 ไบต์

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

สร้างไฟล์ชื่อ "P" ในรูปแบบ PPM ที่มีกริดสี


5

TI-Basic, x ไบต์ (จะทำคะแนนเมื่อฉันสามารถ)

หมายเหตุ: ตัวกรองเนื้อหาปิดกั้นฉันจากการค้นหาขนาดโทเค็นสำหรับแต่ละคำสั่งเหล่านี้ หากใครต้องการให้คะแนนสำหรับฉันไปได้เลย

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"

นี่ดูไม่ดีจริงๆบนหน้าจอเครื่องคิดเลขเล็ก ๆ ของฉัน แต่เดี๋ยวก่อนรูปร่างไม่สำคัญ: ^)

เอาต์พุตกอล์ฟ: แก้ไขสำหรับเอาต์พุตขนาดใหญ่ 8x:

ป้อนคำอธิบายรูปภาพที่นี่



ป้อนคำอธิบายรูปภาพที่นี่



TI-BASIC, x ไบต์

ใช้ Pxl-On แทนข้อความ:

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

เอาต์พุต: เป่าขึ้น ~ 11x:

ป้อนคำอธิบายรูปภาพที่นี่



ป้อนคำอธิบายรูปภาพที่นี่


มันคือ 180 อักขระไม่รวมตัวแบ่งบรรทัด ฉันไม่แน่ใจว่านับเส้นแบ่งใน code golf ได้อย่างไร
Nat

4
ใช่ แต่ TI-BASIC เป็นภาษาที่ใช้TextColorโทเค็

4

C ++, SFML, 177 ไบต์

#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");}

ใช้sf::Image::create(int,int,unsigned char*)วิธีการในการสร้างภาพที่มีค่า rgb ในนั้น


คุณสามารถโกนหนึ่งไบต์โดยการเขียนเป็น0xFF0000 255<<16
Broxzier

1
คุณสามารถประหยัดได้ 13 ไบต์ด้วยการกำหนดค่าสี R / G / B ในตัวแปรก่อนอาร์เรย์: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 ไบต์

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

เอาท์พุท:
ป้อนคำอธิบายรูปภาพที่นี่



โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.