Генерация цветовой сетки RGB


47

Этот! такое цветовая сетка RGB ...

Базовая сетка RGB

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

  • Первый ряд и первый столбец красного цвета.
  • Второй ряд и второй столбец зеленого цвета.
  • Третий ряд и третий столбец синего цвета.

Вот цвета, описанные графически с использованием букв R, G и B.

строка и столбец диаграммы

Вот как мы вычисляем цвет каждого пространства в сетке.

  • Красный + Красный = Красный (# FF0000)
  • Зеленый + Зеленый = Зеленый (# 00FF00)
  • Синий + синий = синий (# 0000FF)
  • Красный + Зеленый = Желтый (# FFFF00)
  • Красный + Синий = Фиолетовый (# FF00FF)
  • Зеленый + Синий = Чирок (# 00FFFF)

Соревнование

  • Напишите код для создания цветовой сетки RGB.
  • Это код гольф, поэтому попытайтесь сделать это наименьшим количеством байтов.
  • Используйте любой язык программирования или язык разметки для создания вашей сетки.
  • Вещи, которые меня волнуют:
    • Результат должен графически отображать сетку RGB с заданными цветами.
  • Вещи, которые меня не волнуют:
    • Если выводом является изображение, HTML, SVG или другая разметка.
    • Размер или форма цветовых блоков.
    • Границы, расстояние и т. Д. Между или вокруг блоков.
    • Определенно не обязательно иметь ярлыки, указывающие, какими должны быть цвета строк и столбцов.

2
Можем ли мы вывести объект mage, родной для нашего языка, например Bitmapобъект в C #?
Воплощение Невежества

1
@EmbodimentofIgnorance звучит хорошо для меня.
AJFaraday


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

Здесь блоки - это .символы. ^[является буквенным escape-символом ASCII (0x1b).

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

Вы можете воссоздать этот скрипт следующим образом:

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

11
какого черта? пожалуйста, объясните :)
flawr

1
может сохранить 2 байта, используя расширение оболочкиprintf ${f=\\e[3%dm.}$f$f\\n 1 3 5 3 2 6 5 6 4
Науэль Фуий

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(Где ^[буквенный escape-символ = 1 байт и character буквальный символ новой строки = 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 для записи цветовой сетки на экран. К сожалению, единственный способ написать определенный атрибут цвета требует также написания кода для размещения курсора в следующем правильном месте, так что для этого есть много дополнительного кода.

Вот вывод, работающий на IBM PC CGA (в текстовом режиме 40x25, чтобы сделать его больше).

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

Загрузите и протестируйте RGBGRID.COM для DOS.


1
Будет ли это работать в DOS, нет, но было бы здорово, если бы это было.
маршал ремесло

@marshalcraft Да, на самом деле это будет работать только в DOS или с использованием эмулятора DOS, такого как DOSBox, pcjs.org и т. д. Я добавил ссылку для загрузки исполняемого файла, чтобы вы могли попробовать.
640KB

Windows поставляется с ограниченным эмулятором dos, который теперь называется командной строкой, что, наверное, следовало бы сказать, было бы здорово, если бы он работал с cmd или PowerShell, хаха.
маршал ремесло

1
@marshalcraft Вы правы, однако, поскольку для DOS это 16-битный исполняемый файл, и если у вас есть 32-битная версия Windows, она должна работать, поскольку она имеет 16-битную среду выполнения. Однако 64-разрядная версия Windows не будет работать, поскольку она имеет только 32-разрядную среду выполнения.
640KB

1
Боже, это крутой ответ
Сэми Бенчериф


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 ax - 0 при запуске приложения com в ms dos
Илья Бурсов

Спасибо, Илья, это приятно знать!
Маргарет Блум

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

Благодарим @Neil за предложение использовать ColorIndexвместо Color43-байтовой экономии.

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

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>.
Даррильо

1
<a href=x>█по умолчанию будет синим, сэкономив вам несколько байтов CSS :)
Линн

15

Дитаа , 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))

Недостаточно элементов в векторе, чтобы заполнить матрицу 3х3, поэтому он оборачивается и повторно использует первый элемент.

Старые версии:

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, я не могу поверить, что я пропустил это. Я пошел дальше и установил самую старую версию и количество персонажей
anjama

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


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

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

@flawr Да, они выглядят иначе, чем те, которые указаны в утверждении вопроса, но я подумал, что если отображает эти цвета по именам, указанным в утверждении вопроса, надеюсь, это будет достаточно близко. = PTEX
Nat

1
Кажется, mathjax использует имена цветов css. Таким образом , вы могли бы заменить purpleс fuchsiaи tealс aquaи greenс limeтогда все было бы правильно , я думаю.
flawr

Просто, чтобы отметить это: вышесказанное может быть немного лучше, удалив некоторые из них {}. Но это нарушило бы слишком много принципов чистого кодирования для моего здравомыслия. = P
Nat

5
Просто отметьте, что сообщество PPCG никогда не славилось здравомыслием. Во всяком случае, вероятно, из-за его отсутствия.
flawr

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}.
manatwork

1
@ Manatwork Smart!
Sheepolution

еще раз, приятно видеть вас здесь
Лицей


9

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

-17 байт благодаря @ExpiredData! Проверьте их даже решение для игры в гольф !

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

Попробуйте онлайн!


1
Работает ли просто изображение вместо imshow? У меня больше нет лицензии Matlab, и я разговариваю по телефону, поэтому не могу ее протестировать
Истек срок действия данных

2
@ExpiredData Большое спасибо, это действительно работает!
flawr

2
Вы, вероятно, можете сделать это тоже. Попробуйте онлайн!
Просроченные данные

1
@ExpiredData --- Очень хороший трюк, большое спасибо! :) почему бы вам не опубликовать это как собственный ответ?
Flawr

3
Хорошо, я сделаю это
Просроченные данные

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
Может быть, вопрос нуб, но не могли бы вы избежать использования таблицы и просто напечатать █ и перейти на новую строку с <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">█
только ASCII

1
@ Только для ASCII b {color: # ff0} u {color: # f0f} i {color: # 0ff} <pre> <font color = red> █ <b> █ <u> █ <b> █ <font color = Лайм> █ <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 версии, но с браузером Chrome?
маршал ремесло

1
Просто любопытно, но как вы нашли кратчайшую из возможных цепочек fs / 0?
Мари

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

Вы просто получите кучу дурацких escape-кодов вместо цветов, но вы все равно можете попробовать это онлайн!

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

букетик красочных х

Сначала мы устанавливаем входной радиус на основание 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печатает escape-символ Скобки используются для разграничения строк, и, насколько я знаю, не являются экранируемыми, поэтому нам нужно также напечатать скобку со значением ASCII 61P. [38;5;]Pэто код «установить цвет переднего плана из нумерованного списка». nпечатает значение с вершины стека без новой строки, выталкивая его. [mX]Pзаканчивает код и печатает «Х». z3%0=Fпроверяет глубину стека мод 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 символов, исключая разрывы строк. Я не уверен, как / если разрывы строк учитываются в коде гольфа.
Nat

4
Да, но TI-BASIC - это токенизированный язык - например, интерпретатор видит TextColor2 байта, а не 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

Wolfram Language (Mathematica), 72 байта

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

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.