Створіть кольорову сітку RGB


47

Це! є кольорова сітка RGB ...

Основна сітка RGB

В основному це двовимірна матриця, в якій:

  • Перший рядок і перший стовпець червоні.
  • Другий ряд і другий стовпчик зелені.
  • Третій ряд і третій стовпчик - сині.

Ось кольори, описані графічно, використовуючи букви R, G та B.

рядок і стовпець діаграма

Ось як обчислюється колір кожного пробілу в сітці.

  • Червоний + червоний = червоний (# FF0000)
  • Зелений + Зелений = Зелений (# 00FF00)
  • Синій + Синій = Синій (# 0000FF)
  • Червоний + зелений = жовтий (# FFFF00)
  • Червоний + синій = фіолетовий (# FF00FF)
  • Зелений + Синій = Тіл (# 00FFFF)

Змагання

  • Написати код для створення кольорової сітки RGB.
  • Це код гольфу, тому намагайтеся зробити це в найменшій кількості байтів.
  • Використовуйте будь-яку мову програмування або мову розмітки для створення вашої сітки.
  • Речі, які мене хвилюють:
    • Результат повинен графічно відображати сітку RGB із визначеними кольорами.
  • Речі, які мене не цікавлять:
    • Якщо виведенням є зображення, HTML, SVG або інша розмітка.
    • Розмір або форма кольорових блоків.
    • Межі, проміжки тощо між блоками або навколо них.
    • Напевно не повинно бути міток, які вказують вам, якими мають бути кольори рядків та стовпців.

2
Чи можемо ми вивести об'єкт mag, який є рідною для нашої мови, наприклад, Bitmapоб'єктом в C #?
Втілення невігластва

1
@EmbodimentofIgnorance мені добре звучить.
AJFaraday

11
Я чекаю рішення в Піт
манассехкац

4
@manassehkatz Чи просто можливо, що жорстке кодування даних було б кращим для гольфу, ніж їх виконання?
AJFaraday

3
Мало того, що це насправді має значення, але я особисто використав би блакитний і пурпуровий кольори замість чирок і фіолетового кольору (або що-небудь ще). Наскільки мені відомо, це офіційні терміни, що використовуються в друкарських або віднімаючих кольорових моделях, таких як CMYK .
Арнольд

Відповіді:


34

Баш, 44

  • 2 байти збережено завдяки @NahuelFouilleul
  • 2 байти збережено завдяки @manatwork
printf "${f=^[[3%dm.}$f$f
" 1 3 5 3 2 6 5 6 4

Тут блоки - це .символи. ^[є буквальним символом втечі ASCII (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 для червоного тощо, і .є символом для друку.
Фредрік Піль

3
Продовжуючи пропозицію @ NahuelFouilleul, двічі цитуйте його: printf "${f=^[[3%dm.}$f$f␤" 1 3 5 3 2 6 5 6 4(Де ^[буквальний символ втечі = 1 байт і ␤ буквальний символ нового рядка = 1 байт.)
manatwork

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 для запису кольорової сітки на екран. На жаль, єдиний спосіб написання певного атрибуту кольору вимагає також написання коду для розміщення курсору в наступному правильному місці, тому для цього є багато додаткового коду.

Ось вихід, який працює на CGA IBM PC (у текстовому режимі 40x25 для його збільшення).

введіть тут опис зображення

Завантажте та протестуйте RGBGRID.COM для DOS.


1
Чи буде це працювати в dos, prib не, але було б круто, якби це було.
маршальське ремесло

@marshalcraft Так, насправді це буде працювати лише в DOS або використовуючи DOS-емулятор, такий як DOSBox, pcjs.org і т. д. Я додав посилання на завантаження виконуваного файлу, щоб ви могли спробувати.
640 Кб

Windows поставляється з обмеженим дос-емулятором, який, мабуть, зараз називається командним рядком, про що я, мабуть, мав би сказати, було б здорово, якби він працював з cmd або PowerShell ха-ха.
маршальське ремесло

1
@marshalcraft Ви маєте рацію, однак, оскільки це для DOS, це 16-бітний виконуваний файл, і якщо у вас є 32-розрядна версія Windows, вона фактично повинна працювати, оскільки має 16-бітове середовище виконання. Однак 64-розрядне видання Windows не буде запускати його, оскільки воно має лише 32-бітну програму.
640 Кб

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

зом:

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у програмі точки входу.
Маргарет Блум

@MargaretBloom сокира 0 на початку застосування програми в мс-
досі

Дякую Іллі, це добре знати!
Маргарет Блум

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 - Дійсно :) Мені вдалося це зробити трохи коротше, використовуючи це. Дякую за пораду.
дата

Я не бачив нічого, що заважає вам змінити це на Sub F () та End Sub для отримання більшої економії.
Кіета

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
Хроноцид

1
Ви також можете видалити лапки з рядка, VBA автоматично примусить номер до рядка.
i_saw_drones

16

GFA Basic 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, які тут використовуються.

Вихід

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. Також неймовірна (і хвороблива) робота!
Густ ван де Валь

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!
Втілення невігластва


@alephalpha Yikes, я не можу повірити, що пропустив це. Я пішов вперед і виправив найстарішу версію та кількість персонажів
анжаму

12

Excel-VBA, 89 73 72 70 байт

Edit: Ви можете використовувати негайне вікно і відмовитися від 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 байти : Видалення номерів рядків комірок - завдяки Тейлор Скотт !


3
Ласкаво просимо до PPCG!
Йохан дю Тойт

1
Дякую! Сподіваюсь, я дізнаюся деякі хитрощі від майстрів :)
i_saw_drones

For i=1To 9:[A:C].Cells(i).Interior.ColorIndex=Mid(367648785,i,1):Nextза 70
Тейлор Скотт

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

Гольф:

$\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
Я думаю, що ваші кольори невірні. Але крім цього, я б схвалив вашу посаду, якби тільки за назвою :)
недолік

TEХ

1
Здається, математика використовує назви кольорів css. Таким чином , ви могли б замінити purpleз fuchsiaі tealз aquaі greenз limeтоді все було б правильно , я думаю.
недолік

Зазначимо лише: вищевикладене може бути трохи більше, видаляючи гольф {}. Але це порушило б занадто багато принципів чистого кодування для моєї розумності. = 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
@manatwork Smart!
Sheepolution

ще один люб, приємно бачити вас тут
Lycea


9

Октава / MATLAB , 57 56 40 байт

-17 байт завдяки @ExpiredData! Перевірте їх рівномірний гольфіст !

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

Спробуйте в Інтернеті!


1
Чи працює просто зображення замість imshow? У вас більше немає ліцензії на Matlab, і я телефоную, тому не можу її перевірити
Термін дії закінчився

2
@ExpiredData Дякую, що справді працює!
недолік

2
Ви можете, ймовірно, зробити це і спробуйте онлайн!
Термін дії, минув

1
@ExpiredData --- Дуже приємний трюк, велике спасибі! :) --- чому б ти не опублікував це як власну відповідь?
недолік


9

Факторна струнна схема, 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, але хіба ви не можете уникнути використання таблиці та просто надрукуйте █ та перейдіть до нового рядка з командою?
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">█
Лише ASCII

1
@ ASCII тільки b {color: # ff0} u {color: # f0f} i {color: # 0ff} <pre> <font color = red> █ <b> █ <u> █ <b> █ <колір шрифту = lime> █ <i> █ <u> █ <i> █ <font color = blue> █
дані

7

JavaScript, 108 102 байти

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

Немає фрагмента, оскільки це працює лише в реальній консолі браузера, а не в консолі фрагмента. Редагування: Дякую @AJFaraday за знімок екрана. Пояснення: Браузери дозволяють першому параметру console.logвключати підстановки. %cПідстановки приймає параметр і застосовує його в якості (продезінфікувати) CSS. Отже, кожен блок кольоровий, використовуючи відповідну підрядку, що f0ff00f0інтерпретується як три шестизначний код кольору.

Приклад виконання коду


1
Я не розумію, як це працює?
маршальське ремесло

1
@marshalcraft %cвикористовується для створення рядка формату, аргументи - стилі CSS для тексту після нього
лише ASCII

1
Так це в основному як dos-версії, але з хромованим браузером?
маршальське ремесло

1
Цікаво, але як Ви вирішили знайти найкоротший можливий ланцюжок fs / 0s?
Марі

2
@Marie Я почав із зазначення, що ff0ffмістить усі змішані кольори і 00f00містить усі чисті кольори. Якщо з'єднати їх, ви отримаєте повторювані позиції для, ff0і f00тоді ви можете видалити перший і останній символи. Потім я написав короткий сценарій, щоб перевірити всі 7-символьні рядки, щоб переконатися, що 8 було оптимальним.
Ніл

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
118: <img src="data:image/bmp;base64,Qk0+AAAAQVNDTxoAAAAMAAAAAwADAAEAGAD/AP///wD/AAAAAAAA//8A/wD//wAAAAAAAP8A////AP8AAAA=">. 14 байт-заголовок файлу, 12-байтний заголовок програми, 9 фактичних даних у рядку (+3 до прокладки до кратного 4), так
лише ASCII

2
Я не рахував, але підозрюю, що <img src="data:image/gif;base64,R0lGODdhAwADAMIGAAAA//8AAP8A/wD/AAD/////AAAAAAAAACwAAAAAAwADAAADBhglNSQEJAA7">це коротше
AC

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

Ви просто отримаєте купу нерозумних кодів втечі замість кольорів, але все ж можете спробувати його в Інтернеті!

На моє розуміння, 16 основних кольорів ANSI можуть бути інтерпретовані, як не хоче термінал. З іншого боку, 216 кольорів у кольоровому кубі xterm мають явні значення RGB. Я використовую ці коди та друкую сітку Xs:

buncha барвисті 'x's

Спочатку встановлюємо вхідний радіус на базу 15 с Fi. Це коштує два байти, але дає три, тому ... чистий приріст байта (і велика втрата читання). Далі ми намагаємося встановити наші кольорові значення на стек. У десятковій частині це було б 21 51 201 51 46 226 201 226 196, але ми перебуваємо в дурному режимі, так і буде 16 36 D6 36 31 101 D6 101 D1. Ми усуваємо один з пробілів, намітивши макрос, який нам потрібно визначити в якийсь момент [AP]sF(який просто друкує канал рядка). Ми можемо скорочуватися36 D6 36 і 101 D6 101, розміщуючи перше значення на стеці, дублюючи його, розміщуючи друге, а потім поміняючи ( 36dD6r, 101dD6r).

Макрос Mобробляє друк та інше. 1CPдрукує символ втечі. Кронштейни використовуються для поділу рядків, і, наскільки я знаю , НЕ можливість виходу, так що ми повинні надрукувати дужку зі значенням ASCII , а також, 61P. [38;5;]Pце "встановити колір переднього плану з коду пронумерованого списку". nдрукує значення у верхній частині стека без нового рядка, виводячи його. [mX]Pзакінчує код і друкує "X". z3%0=Fперевіряє глибину стеку 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, х байт (набирає бал, коли зможу)

Примітка: фільтр вмісту не дозволяє мені шукати розміри токенів для кожної з цих команд. Якщо хтось хоче забити за мене, ідіть на це.

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"

Це виглядає дуже погано на моєму маленькому екрані калькулятора. Але ей, форма не має значення: ^)

Вихід гольфу: Модифікований на 8 разів більший вихід:

введіть тут опис зображення



введіть тут опис зображення



TI-BASIC, х байт

Використання 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 символів, без урахування розривів рядків. Я не впевнений, як / якщо обчислюються розриви рядків у коді гольфу.
Нат

4
Так, але TI-BASIC - це токенізована мова - наприклад, інтерпретатор бачить TextColorяк 2 байти, а не 9, як ви очікували @Nat
Бенджамін

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

Вихід:
введіть тут опис зображення



3

Мова Вольфрама (Mathematica), 72 байти

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

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.