Este! é uma grade de cores RGB ...
Basicamente, é uma matriz bidimensional na qual:
- A primeira linha e a primeira coluna são vermelhas.
- A segunda linha e a segunda coluna são verdes.
- A terceira linha e a terceira coluna são azuis.
Aqui estão as cores descritas graficamente, usando as letras R, G e B.
Veja como calculamos a cor de cada espaço na grade.
- Vermelho + Vermelho = Vermelho (# FF0000)
- Verde + Verde = Verde (# 00FF00)
- Azul + Azul = Azul (# 0000FF)
- Vermelho + Verde = Amarelo (# FFFF00)
- Vermelho + azul = roxo (# FF00FF)
- Verde + azul = azul-petróleo (# 00FFFF)
O desafio
- Escreva um código para gerar uma grade de cores RGB.
- É código de golfe, então tente fazê-lo no menor número de bytes.
- Use qualquer linguagem de programação ou linguagem de marcação para gerar sua grade.
- Coisas que me interessam:
- O resultado deve exibir graficamente uma grade RGB com as cores definidas.
- Coisas com as quais não me importo:
- Se a saída for uma imagem, HTML, SVG ou outra marcação.
- O tamanho ou a forma dos blocos de cores.
- Fronteiras, espaçamento etc. entre ou ao redor dos blocos.
- Definitivamente, ele não precisa ter rótulos informando quais devem ser as cores da linha e da coluna.
code-golf
graphical-output
AJFaraday
fonte
fonte
Bitmap
objeto em C #?Respostas:
Bash, 44
Aqui, blocos são
.
caracteres.^[
é um caractere de escape ASCII literal (0x1b).Você pode recriar esse script da seguinte maneira:
fonte
printf ${f=\\e[3%dm.}$f$f\\n 1 3 5 3 2 6 5 6 4
printf \\e[3%dm. 1'
expande para\\e[31m.
qual é o código de escape ANSI para vermelho e assim por diante e.
é o caractere a ser impresso.printf "${f=^[[3%dm.}$f$f" 1 3 5 3 2 6 5 6 4
(Onde^[
está um caractere de escape literal = 1 byte e  um caractere de nova linha literal = 1 byte.)Montagem 8088, IBM PC DOS,
4443 bytesListagem:
Isso usa os
INT 10H
serviços de vídeo do IBM PC BIOS para gravar a grade de cores na tela. Infelizmente, a única maneira de escrever um atributo de cor específico também exige escrever código para colocar o cursor no próximo local correto, portanto, há muito código extra para isso.Aqui está a saída em execução em um IBM PC CGA (no modo de texto 40x25 para aumentá-lo).
Faça o download e teste o RGBGRID.COM para DOS.
fonte
Wolfram Language (Mathematica) , 41 bytes
Wolfram Language (Mathematica) , 68 bytes
O Mathematica possui built-ins para todas essas cores.
fonte
Código de máquina 80386, IBM PC DOS, 38 bytes
hex:
asm:
saída em escala do dosbox:
fonte
mov al, 13h
está incorreto, a menos que seja garantido pelo DOSBoxah = 0
no ponto de entrada do programa.Excel VBA (janela imediata), 80 bytes
Excel VBA (Função), 96 bytes
Não é uma ferramenta horrível para o trabalho ... Aprecio o fato de o Excel já mostrar uma grade, por isso é uma questão de definir a cor do plano de fundo.
Os nossos agradecimentos a @Neil por sugerir o uso em
ColorIndex
vez de gerarColor
uma economia de 43 bytes.-21 bytes graças a @Keeta
-16 bytes graças a @Chronocidal por sugerir a "Janela imediata"
-2 bytes graças a @i_saw_drones
Muitas alterações do meu envio original :)
fonte
ColorIndex
pois esse é um número de 3 a 8 aqui, que você pode codificar em uma string ou algo assim.for i=1 To 3:for j=1 To 3:Cells(i,j).Interior.ColorIndex=Mid("367408005",i*j,1):next j,i
GFA Basic 2.02 (Atari ST), 48 bytes
Uma listagem editada manualmente no formato .LST. Inclui muitos caracteres não imprimíveis, cujos códigos são mostrados entre colchetes.
O sistema operacional do Atari ST define comandos VT52 estendidos que são usados aqui.
Resultado
captura de tela do Steem SSE
fonte
SVG,
210182 bytesComo o tamanho ou a forma dos blocos de cores não importa, é possível obter alguns bytes com este layout um pouco estranho:
fonte
HTML + CSS,
121120 bytesPior pedaço de HTML que eu já escrevi. Economize um byte graças a @Gust van de Wal
HTML + CSS, 114 bytes (semi-válido)
Estou colocando isso como semi-válido, porque o azul não é exatamente # 0000FF azul e também depende de não ter clicado no link.
Obrigado a @Lynn pela ideia
fonte
<w>
,<x>
,<y>
, e<z>
.<a href=x>█
ficará azul por padrão, economizando alguns bytes de CSS :)ditaa , 118 bytes
Esta é a saída usando a
-E
opção:fonte
R,
895048 bytesVersão mais recente:
Não há elementos suficientes no vetor para preencher a matriz 3x3; portanto, ela envolve e reutiliza o primeiro elemento.
Versões antigas:
fonte
Excel-VBA,
89737270 bytesEditar: você pode usar a janela imediata e dispensar o
Sub
/End Sub
para salvar 16 bytes:Resposta original:
Isso foi inspirado na sugestão de Neil sobre essa resposta e é minha primeira submissão!
Resultado:
-2 bytes : Remoção de números de linhas de células - graças a Taylor Scott !
fonte
For i=1To 9:[A:C].Cells(i).Interior.ColorIndex=Mid(367648785,i,1):Next
por 70Perl 6 (e provavelmente semelhante para muitos idiomas) (31 bytes)
Isso gera um arquivo TIFF sem cabeça, que costumava ser gerado pelo Photoshop com a extensão .raw e presume-se quadrado, a menos que seja especificado de outra forma no momento da abertura. Brincar com a profundidade da cor (se permitida) pode reduzir ainda mais essa questão.
fonte
ffplay (ffmpeg), 93 bytes
Antigo :
fonte
Golf'd:
Ungolf'd:
Editar% s:
Agradecemos a @flawr por mostrar como corrigir as cores!
\rule{5em}{5em}
▉
, mas simplesmente não parece o mesmo.
Provavelmente, poderia economizar mais alguns bytes encontrando nomes de cores que se assemelhem às cores pretendidas.
fonte
purple
comfuchsia
eteal
comaqua
egreen
com aslime
coisas, então eu estaria correto.{}
. Mas isso violaria muitos princípios de codificação limpos para minha sanidade. = PLua + LÖVE / Love2D ,
186183 bytesExperimente online!
Minha primeira entrada de código de golfe!
fonte
t={[0>1]=0,[0<1]=1}
.MATL,
44 23 21 2019 bytesUma porta direta da minha oitava responde com as sugestões de @ExpiredData e @LuisMendo.
experimente online
fonte
Oitava / MATLAB ,
57 5640 bytes-17 bytes graças a @ExpiredData! Confira sua solução ainda mais golfista !
Experimente online!
fonte
Fatorio Blueprint String, 705 bytes
Eu admito, estou apenas ultrapassando os limites do que conta como solução.
Saída produzida quando colocada no jogo (configurações gráficas baixas usadas):
Para provar que é uma solução válida, é necessário provar esta grade de pixels que correspondem exatamente à especificação:
O restante da imagem é classificado como uma borda ou um espaçamento que, como dito na pergunta, não importa.
fonte
Oitava , 38 bytes
Experimente online!
fonte
HTML / CSS,
278141137 bytes-137 bytes graças a comentaristas, principalmente @data
-4 bytes graças a @Einacio
Usa Unicode
█
(U + 2588) para os "blocos" e usa classes CSS / estilo embutido para colori-los.Eu acho que as
<font>
tags podem ter mais golf, no entanto, alterá-las para uma tag mais curta, como<a>
quebra ocolor
atributofonte
</td>
, o navegador é inteligente o suficiente para adicionar automaticamente essa tag de fechamento<td bgcolor=#f00>
<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">█
JavaScript,
108102 bytesNenhum trecho porque isso funciona apenas em um console do navegador real e não no console do trecho. Edit: Obrigado a @AJFaraday pela captura de tela. Explicação: Os navegadores permitem que o primeiro parâmetro
console.log
inclua substituições. A%c
substituição pega um parâmetro e o aplica como CSS (higienizado).█
Portanto, cada bloco é colorido usando a substring apropriadaf0ff00f0
interpretada como um código de cores de três dígitos hexadecimais.fonte
%c
é usado para criar uma string de formato, os argumentos sendo estilos CSS para o texto após eleff0ff
contém todas as cores misturadas e00f00
contém todas as cores puras. Se você as concatenar, obterá posições duplicadasff0
e,f00
portanto, poderá remover o primeiro e o último caracteres. Em seguida, escrevi um script curto para verificar todas as sequências de 7 caracteres para garantir que 8 fossem ótimas.HTML (GIF), 108 bytes
É a batalha dos formatos de imagem baseados na Web! (Algum candidato a TIF ou JPG por aí?)
Responder por @AC .
HTML (BMP),
116115 bytesResponder por @ apenas ASCII .
HTML (WebP), 116 bytes
Responder por @Hohmannfan .
HTML (PNG),
151136135 bytes-15 bytes graças a @Hohmannfan .
Veja também minhas respostas em CSS e SVG .
fonte
<img src="data:image/bmp;base64,Qk0+AAAAQVNDTxoAAAAMAAAAAwADAAEAGAD/AP///wD/AAAAAAAA//8A/wD//wAAAAAAAP8A////AP8AAAA=">
. Cabeçalho de arquivo de 14 bytes, cabeçalho de aplicativo de 12 bytes, 9 dados reais por linha (+3 para multiplicar por 4), sim<img src="data:image/gif;base64,R0lGODdhAwADAMIGAAAA//8AAP8A/wD/AAD/////AAAAAAAAACwAAAAAAwADAAADBhglNSQEJAA7">
seja mais curtoiVBORw0KGgoAAAANSUhEUgAAAAMAAAADCAIAAADZSiLoAAAAFElEQVR4AWP4z8Dw/z8DEIIodB4A4D0O8pOGuTgAAAAASUVORK5CYII=
<img src=data:image/webp;base64,UklGRjYAAABXRUJQVlA4TCoAAAAvAoAAAC8gEEjaH3qN+RcQFPk/2vwHH0QCg0I2kuDYvghLcAoX0f/4Hgc>
dc (no xterm), 64 bytes
Você receberá apenas um monte de códigos de escape malucos em vez de cores, mas ainda poderá experimentá-lo online!
Pelo meu entendimento, as 16 cores básicas do ANSI são livres para serem interpretadas da maneira que o terminal desejar. Por outro lado, as 216 cores no cubo de cores xterm têm valores RGB explícitos. Estou usando esses códigos e imprimindo uma grade de
X
s:Primeiro, ajustamos o raio de entrada para a base 15 com
Fi
. Isso custa dois bytes, mas retorna três, então ... um ganho líquido de um byte (e uma grande perda de legibilidade). Em seguida, estamos tentando colocar nossos valores de cores na pilha. Em decimal, isso seria21 51 201 51 46 226 201 226 196
, mas estamos no modo maluco, então será16 36 D6 36 31 101 D6 101 D1
. Eliminamos um dos espaços inserindo uma macro que precisamos definir em algum momento[AP]sF
(que simplesmente imprime um avanço de linha). Podemos reduzir36 D6 36
e101 D6 101
colocando o primeiro valor na pilha, duplicando-o, colocando o segundo e depois trocando (36dD6r
,101dD6r
).Macro
M
lida com a impressão e outros enfeites.1CP
imprime o caractere de escape. Os colchetes são usados para delimitar as strings e, até onde eu sei, não são escapáveis, portanto, precisamos imprimir o colchete com um valor ASCII também61P
.[38;5;]P
é o código 'definir cor de primeiro plano da lista numerada'.n
imprime o valor da parte superior da pilha sem uma nova linha, exibindo-a.[mX]P
termina o código e imprime um 'X'.z3%0=F
verifica a profundidade da pilha mod 3, executando nossa macro de avanço de linhaF
quando necessário.z0<M
continuaM
funcionando enquanto houver coisas na pilha.dsMx
para correr.Observe que, se você executar isso em CC em um xterm, a cor do primeiro plano ficará azul.
1CP61P74P
(entrada mostrada na captura de tela) deve redefinir isso.fonte
Tartaruga Blockly, 45 blocos
Experimente online!
Que tal jogar um pequeno jogo de encontrar a ferramenta mais ridícula para o trabalho?
Resultado:
O programa (como uma captura de tela para heresia adicional):
Nota: Os blocos acinzentados também são contados na métrica.
fonte
Node.js, 79 bytes
Produz um arquivo chamado "P" no formato PPM que contém a grade de cores.
fonte
TI-Basic, x bytes (será pontuado quando puder)
Nota: o filtro de conteúdo está me impedindo de procurar os tamanhos de token para cada um desses comandos. Se alguém quiser marcar para mim, vá em frente.
Isso parece muito ruim na minha pequena tela de calculadora. Mas ei, a forma não importa: ^)
Saída de golfe: Modificada para uma saída 8x maior:
TI-BASIC, x bytes
Usando Pxl-On em vez de texto:
Saída: ampliada ~ 11x:
fonte
TextColor
2 bytes, não 9, como seria de se esperar @NatC ++, SFML, 177 bytes
Usa o
sf::Image::create(int,int,unsigned char*)
método para criar uma imagem com valores rgbfonte
0xFF0000
como255<<16
.int b=255<<16,g=65280,r=255,d[]={r,g|r,b|r,g|r,g,b|g,b|r,b|g,b};
C #,
248204198 bytesResultado:
fonte
BASIC C64, 106 bytes
fonte
Wolfram Language (Mathematica), 72 bytes
fonte