A cor verdadeira (24 bits) na Wikipedia é descrita em parte pertinente como
24 bits quase sempre usa 8 bits de R, G, B. A partir de 2018, a profundidade de cores de 24 bits é usada por praticamente todos os monitores de computadores e telefones e pela grande maioria dos formatos de armazenamento de imagens. Quase todos os casos em que existem 32 bits por pixel significam que 24 são usados para a cor e os 8 restantes são o canal alfa ou não utilizados.
2 24 fornece 16.777.216 variações de cores. O olho humano pode discriminar até dez milhões de cores [10] e, como a gama de uma tela é menor que o alcance da visão humana, isso significa que isso deve cobrir esse alcance com mais detalhes do que se pode perceber. ...
...
Os sistemas Macintosh referem-se às cores de 24 bits como "milhões de cores". O termo "cor verdadeira" é usado em algum momento para significar o que este artigo chama de "cor direta". [13] Também é frequentemente usado para se referir a todas as profundidades de cor iguais ou superiores a 24.
Todas as 16.777.216 cores
Tarefa
Escreva um programa que gere e retorne todas as 16.777.216 variações de cores em uma matriz como seqüências de caracteres na rgb()
função CSS
5.1 As funções RGB:
rgb()
ergba()
A
rgb()
função define uma cor RGB especificando diretamente os canais vermelho, verde e azul. Sua sintaxe é:rgb() = rgb( <percentage>{3} [ / <alpha-value> ]? ) | rgb( <number>{3} [ / <alpha-value> ]? ) <alpha-value> = <number> | <percentage>
Os três primeiros argumentos especificam os canais vermelho, verde e azul da cor, respectivamente.
0%
representa o valor mínimo para esse canal de cores na gama sRGB e100%
representa o valor máximo. A<number>
é equivalente a<percentage>
, mas com um intervalo diferente:0
novamente representa o valor mínimo para o canal de cores, mas255
representa o máximo. Esses valores vêm do fato de que muitos mecanismos gráficos armazenam os canais de cores internamente como um byte único, que pode conter números inteiros entre 0 e 255. As implementações devem respeitar a precisão do canal como criada ou calculada sempre que possível. Se isso não for possível, o canal deve ser arredondado para o valor mais próximo com a maior precisão usada, arredondando para cima se dois valores estiverem igualmente próximos.O argumento final, the
<alpha-value>
, especifica o alfa da cor. Se fornecido como a<number>
, o intervalo útil do valor é0
(representando uma cor totalmente transparente) a1
(representando uma cor totalmente opaca). Se dado como a,0%
representa uma cor totalmente transparente, enquanto100%
representa uma cor totalmente opaca. Se omitido, o padrão é100%
.Os valores fora desses intervalos não são inválidos, mas são fixados nos intervalos definidos aqui no momento do valor calculado.
Por motivos legados,
rgb()
também suporta uma sintaxe alternativa que separa todos os seus argumentos com vírgulas:rgb() = rgb( <percentage>#{3} , <alpha-value>? ) | rgb( <number>#{3} , <alpha-value>? )
Também por motivos legados,
rgba()
também existe uma função, com uma gramática e um comportamento idênticosrgb()
.
ou #RRGGBB
formato de notação hexadecimal RGB
5.2 As notações hexadecimais RGB:
#RRGGBB
A notação de cor hexadecimal CSS permite que uma cor seja especificada, fornecendo os canais como números hexadecimais, que é semelhante à maneira como as cores geralmente são escritas diretamente no código do computador. Também é mais curto do que escrever a mesma cor na
rgb()
notação.A sintaxe de a
<hex-color>
é um<hash-token>
token cujo valor consiste em 3, 4, 6 ou 8 dígitos hexadecimais. Em outras palavras, uma cor hexadecimal é escrita como um caractere de hash, "#", seguido por um número de dígitos de 0 a 9 ou letras af (o caso das letras não importa -#00ff00
é idêntico a#00FF00
).O número de dígitos hexadecimais fornecidos determina como decodificar a notação hexadecimal em uma cor RGB:
6 dígitos
O primeiro par de dígitos, interpretado como um número hexadecimal, especifica o canal vermelho da cor, onde
00
representa o valor mínimo eff
(255 em decimal) representa o máximo. O próximo par de dígitos, interpretado da mesma maneira, especifica o canal verde e o último par especifica o azul. O canal alfa da cor é totalmente opaco.EXEMPLO 2
Por outras palavras,#00ff00
representa a mesma cor quergb(0 255 0)
(um verde limão).
Consulte o rascunho do editor do módulo de cores CSS, nível 4
Exemplos
rgb()
Função CSS (o caractere de espaço pode ser substituído por vírgula, por exemplo, rgb(0 255 0)
)
// `rgb()` `<percentage>` as strings in resulting array
['rgb(0%,0%,0%)', ...,'rgb(0%,255%,0)', ...'rgb(255,255,255)']
// `rgb()` `<number>` as strings in resulting array
['rgb(0,0,0)', ...,'rgb(0,255,0)', ...'rgb(255,255,255)']
Notação hexadecimal CSS RGB RRGGBB
// RGB hexadecimal notation as strings in resulting array
['#000000', ...,'#00ff00', ...'#ffffff']
Critérios de vitória
Menos bytes usados para escrever o programa.
fonte
Respostas:
R , 25 bytes
Experimente online!
fonte
a:b-c
um vetor dea-c
parab-c
, inclusive ( cria um vetor dea
parab
e depois subtraic
cada entrada).Python 2 ,
77403937 bytesExperimente online!
-1 byte graças ao Digital Trauma
-2 bytes graças a dylnan
fonte
8**8
vez de1<<24
salvar um byteprint['...
PowerShell ,
2826 bytesExperimente online!
Loops de
1
até16mb
(16777216). A cada iteração, usamos o-f
operador ormat que atua no número atual pré-decrementado em--$_
relação à string"#{0:x6}"
. Aqui, estamos especificando osx
valores dele, preenchidos com6
dígitos, com um hash#
na frente. No TIO, limitado a 60 segundos / 128KiB de saída. Mude1
para(16mb-5)
para ver como termina .fonte
JavaScript (ES7),
656261 bytesGuardado
34 bytes graças a @tshRetorna uma matriz de
#RRGGBB
strings.Experimente online! (saída truncada)
fonte
8**8
vez de1<<24
. Também funcionaria em JS.Lisp comum, 42 bytes
Experimente online!
fonte
format
-golf que eu já vi. +1 somente nessa base.Japonês, 14 bytes
Saídas como
#rrggbb
.Experimente (limitado aos primeiros 4096 elementos)
Explicação
fonte
ù
. Outro caso de uso típico é usá-lo como um contador quando você precisar incrementar uma variável enquanto, por exemplo, estiver mapeando uma matriz. E, é claro, como é uma variável, você também pode simplesmente atribuir um valor, se necessário.0
é o único inteiro de um dígito que tem sua própria variável - bem, tecnicamente, 7 como a variável de entrada 6U-Z
padrão para0
. Os outros inteiros atribuídos às variáveis de Japt são:-1, 10-16, 32, 64 & 100
.Haskell, 41 bytes
Experimente online!
fonte
05AB1E ,
151410 bytesExperimente online.
Explicação:
fonte
Lote, 87 bytes
Saídas no formato CSS. A substituição da variável ocorre antes da
for
análise ser analisada, portanto o código real é o seguinte:fonte
C # (compilador interativo do Visual C #) , 47 bytes
Experimente online!
fonte
C # (.NET Core) , 75 bytes
Experimente online!
Porta da versão JAVA 10 com formato de cadeia interpolada em C #
fonte
K (oK) , 19 bytes
Solução:
Experimente online! (limitado aos primeiros 500 números)
Explicação:
Despejar cordas rgb. Converta cada número entre 0 e 16777216 na base 256 e depois em seqüências de caracteres ...
fonte
MATL ,
1715 bytesExperimente online!
A versão TIO exibe os primeiros 2 ^ 10 apenas para não atingir o tempo limite. Incluí a iteração final no rodapé para mostrar que ela realmente termina às
#FFFFFF
. Economizou um byte alterando para emfprintf
vez de montar manualmente a sequência. Produz uma lista separada por vírgula.Explicação
fonte
APL (Dyalog Unicode) ,
474320 bytesExperimente online!
6⍴
4⍴
Obrigado a @Dzaima e @ngn pelos 23 bytes.
Usos
⎕IO←0
.Quão:
fonte
Ruby , 31 bytes
Experimente online!
fonte
%
uma corda tão longa e uma matriz com tanto tempo. Para sua informação, você pode salvar um byte usando uma quebra de linha literal em vez de\n
.V , 25 bytes
Experimente online! (substituído
16777215
por31
)Explicação
fonte
Lote, 69 + 4 = 73
g.cmd, 69
Salva o valor hexadecimal com o formulário
#RRGGBB
em uma 'Matriz'.g.cmd
deve ser chamado usandocmd /V/Q/K g.cmd
. É daí que o + 4 vem/V/Q
, contando como 4 caracteres adicionais em comparação com apenascmd /K g.cmd
. Isso configura um ambiente que possui a 'Matriz' na memória. Também demora uma eternidade para executar, portanto, use valores muito baixos para tentar interromper a execução usandoCtrl+C
Demolir
Invokation
/V
permite expansão atrasada, mas é mais curto quesetlocal EnableDelayedExpansion
, e é por isso que precisamos dacmd
chamada em primeiro lugar/Q
omite a saída e é equivalente a@echo off
/K
permite executar uma expressão (neste casog.cmd
) e não sai depois, para que você possa verificar a 'Matriz' usandoset #
g.cmd
Este bit usa um truque documentado aqui para converter um número normal em um hexadecimal e, em seguida, salva esse valor em uma 'Matriz'.
Eu chamo essa estrutura de armazenamento de 'Matriz', mas isso não está certo, pois matrizes verdadeiras não existem no Lote. MAS você pode nomear variáveis para que elas tenham nomes semelhantes a matrizes, assim:
ou, como neste caso:
Você ainda pode acessá-los via
!#%position%!
fonte
/V/Q/K
possa ser reivindicado como "argumento" para o intérprete e conte como "3 + 69 = 72". metaGroovy , 53 bytes
Definição de função. c () retorna um ArrayList (presumo que esteja bem, mesmo com a pergunta solicitando um array).
Ungolfed, com tipos implícitos:
Experimente online!
fonte
Java 10,
8784 bytes-3 bytes thanks to @archangel.mjj.
Try it online (limited to the first
4,096
items).Explanation:
fonte
r[i]="".format("#%06X",i);
"".format("#%06X",i)
before since I saw it in the Python answer, but I dropped the answer because I couldn't get it to work fast enough for TIO. Then I saw everyone just outputting the first4,096
items on TIO, so I wrote the answer again, forgetting about"#%06X"
... >.<var r
in Java..var
in Java.PHP,
6862 bytesThis is supposed to be placed inside a file, the array is returned in the end, to be usable.
To have access to the array, simply give the result of the include (e.g.:
$a = include 'xyz.php';
) to a variable.Thanks to @manatwork for saving me 6 bytes and fix a goof.
fonte
%1$06d
format string? And I see no reason for using1$
. You could reduce the length by including the “#” in the format string:#%06x
. Which would come handy when adding extra characters to fix the range, as currently counts up to 16777216 = #1000000.%d
to%x
. And completely forgot about moving the#
inside thesprintf()
call. You saved me 6 bytes. Thank youMATL, 11 bytes
Try it online! (with only three hex digits instead of six)
Explanation
fonte
Bash + jot, 22
Try it online!
fonte
Perl 5, 31 bytes
Try it online!
fonte
Lua,
4745 bytesTry it online!
fonte
s
and save a byte.T-SQL,
122117 bytesReturns a 16,777,216-row table of
#RRGGBB
strings. The line break is for readability only:Uses a recursive CTE for a number table from 0 to 2^24-1, then uses the built-in
FORMAT
command (available in SQL 2012 or later) to turn it into a 6-digit hex string. Attach the#
to the front, and we're done.Edit 1: Removed
POWER()
function, the number was shorter :Pfonte
Jelly, 12 bytes
Try it online!
fonte
Jelly, 8 bytes
Try it online! (note: uses
2
rather than6
as6
times out on TIO)Function submission (because Jelly full programs will, by default, print lists of strings with no delimiters between them, making it hard to see the boundaries). The TIO link contains a wrapper to print a list of strings using newlines to separate them.
Explanation
fonte
PHP, 43 bytes
Try it online!
fonte
1<<24
-->8**8
should work here to, credits to @DigitalTraumaScala, 40 bytes
Try it online!
fonte
Perl 6, 26 bytes
Try it online!
Uses the same format as everyone else. Times out on TIO.
Or, in rgb format:
31 bytes
Try it online!
fonte
rgb(0, 0, 0)
including the stringrgb
.