El color verdadero (24 bits) en Wikipedia se describe en la parte pertinente como
24 bits casi siempre usa 8 bits de cada uno de R, G, B. A partir de 2018, la profundidad de color de 24 bits es utilizada por prácticamente todas las computadoras y pantallas de teléfonos y la gran mayoría de los formatos de almacenamiento de imágenes. Casi todos los casos en los que hay 32 bits por píxel significa que se usan 24 para el color, y los 8 restantes son el canal alfa o no se usan.
2 24 da 16,777,216 variaciones de color. El ojo humano puede discriminar hasta diez millones de colores [10] y dado que la gama de una pantalla es más pequeña que el rango de la visión humana, esto significa que debe cubrir ese rango con más detalles de los que se pueden percibir. ...
...
Los sistemas Macintosh se refieren al color de 24 bits como "millones de colores". El término "color verdadero" se usa en ocasiones para referirse a lo que este artículo llama "color directo". [13] También se usa a menudo para referirse a todas las profundidades de color mayores o iguales a 24.
Todos los 16.777.216 colores
Tarea
Escriba un programa que genere y devuelva las 16.777.216 variaciones de color dentro de una matriz como cadenas en la rgb()
función CSS
5.1. Las funciones RGB:
rgb()
yrgba()
La
rgb()
función define un color RGB especificando los canales rojo, verde y azul directamente. Su sintaxis es:rgb() = rgb( <percentage>{3} [ / <alpha-value> ]? ) | rgb( <number>{3} [ / <alpha-value> ]? ) <alpha-value> = <number> | <percentage>
Los primeros tres argumentos especifican los canales rojo, verde y azul del color, respectivamente.
0%
representa el valor mínimo para ese canal de color en la gama sRGB y100%
representa el valor máximo. A<number>
es equivalente a a<percentage>
, pero con un rango diferente:0
nuevamente representa el valor mínimo para el canal de color, pero255
representa el maximo. Estos valores provienen del hecho de que muchos motores gráficos almacenan los canales de color internamente como un solo byte, que puede contener enteros entre 0 y 255. Las implementaciones deben respetar la precisión del canal según lo creado o calculado siempre que sea posible. Si esto no es posible, el canal debe redondearse al valor más cercano con la mayor precisión utilizada, redondeando hacia arriba si dos valores están igualmente cerca.El argumento final, el
<alpha-value>
, especifica el alfa del color. Si se da como a<number>
, el rango útil del valor es0
(que representa un color totalmente transparente) a1
(que representa un color totalmente opaco). Si se da como a,0%
representa un color totalmente transparente, mientras que100%
representa un color completamente opaco. Si se omite, su valor predeterminado es100%
.Los valores fuera de estos rangos no son inválidos, pero están sujetos a los rangos definidos aquí en el tiempo de valor calculado.
Por razones heredadas,
rgb()
también admite una sintaxis alternativa que separa todos sus argumentos con comas:rgb() = rgb( <percentage>#{3} , <alpha-value>? ) | rgb( <number>#{3} , <alpha-value>? )
También por razones heredadas,
rgba()
también existe una función, con una gramática y comportamiento idénticosrgb()
.
o #RRGGBB
formato de notación hexadecimal RGB
5.2. Las notaciones hexadecimales RGB:
#RRGGBB
La notación de color hexadecimal CSS permite especificar un color al dar a los canales como números hexadecimales, que es similar a cómo los colores a menudo se escriben directamente en el código de la computadora. También es más corto que escribir el mismo color en
rgb()
notación.La sintaxis de a
<hex-color>
es un<hash-token>
token cuyo valor consta de 3, 4, 6 u 8 dígitos hexadecimales. En otras palabras, un color hexadecimal se escribe como un carácter hash, "#", seguido de cierto número de dígitos 0-9 o letras af (el caso de las letras no importa,#00ff00
es idéntico a#00FF00
).El número de dígitos hexadecimales determinado determina cómo decodificar la notación hexadecimal en un color RGB:
6 dígitos
El primer par de dígitos, interpretado como un número hexadecimal, especifica el canal rojo del color, donde
00
representa el valor mínimo yff
(255 en decimal) representa el máximo. El siguiente par de dígitos, interpretado de la misma manera, especifica el canal verde, y el último par especifica el azul. El canal alfa del color es completamente opaco.EJEMPLO 2
En otras palabras,#00ff00
representa el mismo color quergb(0 255 0)
(un verde lima).
Vea el borrador del editor del módulo de color CSS Nivel 4
Ejemplos
rgb()
Función CSS (el carácter de espacio se puede sustituir por el carácter de coma, por ejemplo, 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)']
Notación hexadecimal CSS RGB RRGGBB
// RGB hexadecimal notation as strings in resulting array
['#000000', ...,'#00ff00', ...'#ffffff']
Criterios ganadores
Menos bytes utilizados para escribir el programa.
fuente
Respuestas:
R , 25 bytes
Pruébalo en línea!
fuente
a:b-c
un vector desdea-c
hastab-c
, inclusive ( crea un vector desdea
hastab
, luego restac
de cada entrada).Python 2 ,
77403937 bytesPruébalo en línea!
-1 byte gracias a Digital Trauma
-2 bytes gracias a dylnan
fuente
8**8
lugar de1<<24
guardar un byteprint['...
PowerShell ,
2826 bytesPruébalo en línea!
Bucles desde
1
hasta16mb
(16777216). Cada iteración, utilizamos el-f
operador ormat que actúa sobre el número actual pre-decrementado--$_
contra la cadena"#{0:x6}"
. Aquí, estamos especificando losx
valores, rellenados con6
dígitos, con un hash#
al frente. En TIO, limitado a 60 segundos / 128 KB de salida. Cambia1
a(16mb-5)
para ver cómo termina .fuente
JavaScript (ES7),
656261 bytesGuardado
34 bytes gracias a @tshDevuelve una matriz de
#RRGGBB
cadenas.Pruébalo en línea! (salida truncada)
fuente
8**8
lugar de1<<24
. También funcionaría en JS.Lisp común, 42 bytes
Pruébalo en línea!
fuente
format
golf que he visto. +1 solo sobre esa base.Japt, 14 bytes
Salidas como
#rrggbb
.Pruébelo (limitado a los primeros 4096 elementos)
Explicación
fuente
ù
. Otro caso de uso típico es usarlo como un contador cuando necesita incrementar una variable mientras, por ejemplo, mapea sobre una matriz. Y, por supuesto, como es una variable, simplemente puede asignarle un valor, si es necesario.0
es el único número entero de un solo dígito que tiene su propia variable, bueno, técnicamente, 7 como la variable de entrada 6U-Z
predeterminada0
. Los otros números enteros asignados a las variables en Japt son:-1, 10-16, 32, 64 & 100
.Haskell, 41 bytes
Pruébalo en línea!
fuente
05AB1E ,
151410 bytesPruébalo en línea.
Explicación:
fuente
Lote, 87 bytes
Salidas en formato CSS. La sustitución de la variable ocurre antes de
for
analizar la instrucción, por lo que el código real es el siguiente:fuente
C # (compilador interactivo de Visual C #) , 47 bytes
Pruébalo en línea!
fuente
C # (.NET Core) , 75 bytes
Pruébalo en línea!
Puerto de la versión JAVA 10 con formato de cadena interpolada C #
fuente
K (oK) , 19 bytes
Solución:
Pruébalo en línea! (limitado a los primeros 500 números)
Explicación:
Volcar cadenas rgb. Convierta cada número entre 0 y 16777216 a base 256, luego convierta a cadenas ...
fuente
MATL ,
1715 bytesPruébalo en línea!
La versión TIO muestra los primeros 2 ^ 10 solo para no agotar el tiempo de espera. Incluí la iteración final en el pie de página para mostrar que efectivamente termina en
#FFFFFF
. Se guardó un byte cambiando a enfprintf
lugar de ensamblar manualmente la cadena. Emite una lista separada por comas.Explicación
fuente
APL (Dyalog Unicode) ,
474320 bytesPruébalo en línea!
6⍴
4⍴
Gracias a @Dzaima y @ngn por los 23 bytes.
Usos
⎕IO←0
.Cómo:
fuente
Ruby , 31 bytes
Pruébalo en línea!
fuente
%
tome una cadena tan larga y una matriz tan larga. Para su información, puede guardar un byte utilizando un salto de línea literal en lugar de\n
.V , 25 bytes
Pruébalo en línea! (reemplazado
16777215
por31
)Explicación
fuente
Lote, 69 + 4 = 73
g.cmd, 69
Guarda el valor hexadecimal con forma
#RRGGBB
en una 'matriz'.g.cmd
es ser llamado usandocmd /V/Q/K g.cmd
. De aquí viene el + 4/V/Q
, contando como 4 caracteres adicionales en comparación con solocmd /K g.cmd
. Esto configura un entorno que tiene la 'matriz' en la memoria. También tarda una eternidad en ejecutarse, así que use valores muy bajos para intentar o interrumpir la ejecución usandoCtrl+C
Descompostura
Invocación
/V
permite la expansión retrasada, pero es más corta quesetlocal EnableDelayedExpansion
, por eso necesitamos lacmd
llamada en primer lugar/Q
omite la salida y es equivalente a@echo off
/K
le permite ejecutar una expresión (en este casog.cmd
) y no sale después, por lo que puede verificar la 'matriz' utilizandoset #
g.cmd
Este bit utiliza un truco documentado aquí para convertir un número normal a un hexadecimal, luego guarda ese valor en una 'matriz'.
He estado llamando a esa estructura de almacenamiento una 'matriz', pero eso no es realmente correcto ya que las matrices verdaderas no existen en Batch. PERO puedes nombrar variables para que tengan nombres parecidos a matrices, así:
o, como en este caso:
Todavía puedes acceder a ellos a través de
!#%position%!
fuente
/V/Q/K
se pueda reclamar como "argumentos" para el intérprete y contar como "3 + 69 = 72". metaGroovy , 53 bytes
Definición de funciones. c () devuelve una ArrayList (supongo que está bien, incluso a través de la pregunta pide una matriz).
Sin golf, con tipos implícitos:
Pruébalo en línea!
fuente
Java 10,
8784 bytes-3 bytes gracias a @ archangel.mjj .
Pruébelo en línea (limitado a los primeros
4,096
artículos).Explicación:
fuente
r[i]="".format("#%06X",i);
"".format("#%06X",i)
antes desde que lo vi en la respuesta de Python, pero descarté la respuesta porque no pude hacer que funcionara lo suficientemente rápido para TIO. Luego vi a todos simplemente sacando los primeros4,096
elementos en TIO, así que escribí la respuesta nuevamente, olvidando"#%06X"
...>. <var r
en Java ..var
en Java.PHP,
6862 bytesSe supone que esto se coloca dentro de un archivo, la matriz se devuelve al final, para ser utilizable.
Para tener acceso a la matriz, simplemente dé el resultado de la inclusión (por ejemplo:)
$a = include 'xyz.php';
a una variable.Gracias a @manatwork por guardarme 6 bytes y arreglar un error.
fuente
%1$06d
cadena de formato? Y no veo ninguna razón para usar1$
. Se podría reducir la longitud mediante la inclusión de la “#” en la cadena de formato:#%06x
. Lo que sería útil al agregar caracteres adicionales para corregir el rango, ya que actualmente cuenta hasta 16777216 = # 1000000.%d
a%x
. Y se olvidó por completo de mover el#
interior de lasprintf()
llamada. Me salvaste 6 bytes. GraciasMATL , 11 bytes
Pruébalo en línea!(con solo tres dígitos hexadecimales en lugar de seis)
Explicación
fuente
Bash + jot, 22
Pruébalo en línea!
fuente
Perl 5 , 31 bytes
Pruébalo en línea!
fuente
Lua ,
4745 bytesPruébalo en línea!
fuente
s
y guardar un byte.T-SQL,
122117 bytesDevuelve una tabla de
#RRGGBB
cadenas de 16.777.216 filas . El salto de línea es solo para legibilidad:Utiliza un CTE recursivo para una tabla numérica de 0 a 2 ^ 24-1, luego usa el
FORMAT
comando incorporado (disponible en SQL 2012 o posterior) para convertirlo en una cadena hexadecimal de 6 dígitos . Adjunte el#
al frente, y hemos terminado.Edición 1:
POWER()
función eliminada , el número era más corto: Pfuente
Jalea , 12 bytes
Pruébalo en línea!
fuente
Jalea , 8 bytes
Pruébalo en línea! (nota: utiliza en
2
lugar de6
como6
tiempo de espera en TIO)Envío de funciones (porque los programas completos de Jelly, por defecto, imprimirán listas de cadenas sin delimitadores entre ellas, lo que dificultará ver los límites). El enlace TIO contiene un contenedor para imprimir una lista de cadenas usando nuevas líneas para separarlas.
Explicación
fuente
PHP , 43 bytes
Pruébalo en línea!
fuente
1<<24
->8**8
debería trabajar aquí para, créditos a @DigitalTraumaScala , 40 bytes
Pruébalo en línea!
fuente
Perl 6 , 26 bytes
Pruébalo en línea!
Utiliza el mismo formato que todos los demás. Tiempos de espera en TIO.
O, en formato rgb:
31 bytes
Pruébalo en línea!
fuente
rgb(0, 0, 0)
incluir la cadenargb
.