La vraie couleur (24 bits) sur Wikipedia est décrite dans la partie pertinente comme
24 bits utilise presque toujours 8 bits de chacun des R, G et B.Depuis 2018, la profondeur de couleur 24 bits est utilisée par pratiquement tous les écrans d'ordinateur et de téléphone et la grande majorité des formats de stockage d'images. Presque tous les cas où il y a 32 bits par pixel signifient que 24 sont utilisés pour la couleur, et les 8 restants sont le canal alpha ou inutilisés.
2 24 donne 16 777 216 variations de couleurs. L'œil humain peut distinguer jusqu'à dix millions de couleurs [10] et comme la gamme d'un écran est plus petite que la plage de vision humaine, cela signifie que cela devrait couvrir cette plage avec plus de détails que ce qui peut être perçu. ...
...
Les systèmes Macintosh désignent les couleurs 24 bits comme des «millions de couleurs». Le terme «True color» est parfois utilisé pour signifier ce que cet article appelle «couleur directe». [13] Il est également souvent utilisé pour désigner toutes les profondeurs de couleur supérieures ou égales à 24.
Toutes les 16,777,216 couleurs
Tâche
Écrire un programme qui génère et renvoie toutes les 16 777 216 variations de couleurs dans un tableau sous forme de chaînes dans la rgb()
fonction CSS
5.1. Les fonctions RVB:
rgb()
etrgba()
La
rgb()
fonction définit une couleur RVB en spécifiant directement les canaux rouge, vert et bleu. Sa syntaxe est:rgb() = rgb( <percentage>{3} [ / <alpha-value> ]? ) | rgb( <number>{3} [ / <alpha-value> ]? ) <alpha-value> = <number> | <percentage>
Les trois premiers arguments spécifient respectivement les canaux rouge, vert et bleu de la couleur.
0%
représente la valeur minimale pour ce canal de couleur dans la gamme sRGB et100%
représente la valeur maximale. A<number>
est équivalent à a<percentage>
, mais avec une plage différente:0
représente à nouveau la valeur minimale pour le canal de couleur, mais255
représente le maximum. Ces valeurs proviennent du fait que de nombreux moteurs graphiques stockent les canaux de couleur en interne comme un seul octet, qui peut contenir des entiers compris entre 0 et 255. Les implémentations doivent respecter la précision du canal tel qu'il est créé ou calculé dans la mesure du possible. Si cela n'est pas possible, le canal doit être arrondi à la valeur la plus proche avec la plus grande précision utilisée, arrondi si deux valeurs sont également proches.Le dernier argument, le
<alpha-value>
, spécifie l'alpha de la couleur. Si donné comme un<number>
, la plage utile de la valeur est0
(représentant une couleur entièrement transparente) à1
(représentant une couleur entièrement opaque). Si donné comme un,0%
représente une couleur entièrement transparente, tandis que100%
représente une couleur entièrement opaque. S'il est omis, il est par défaut100%
.Les valeurs en dehors de ces plages ne sont pas invalides, mais sont fixées aux plages définies ici au moment de la valeur calculée.
Pour des raisons héritées,
rgb()
prend également en charge une syntaxe alternative qui sépare tous ses arguments par des virgules:rgb() = rgb( <percentage>#{3} , <alpha-value>? ) | rgb( <number>#{3} , <alpha-value>? )
Également pour des raisons héritées, une
rgba()
fonction existe également, avec une grammaire et un comportement identiques àrgb()
.
ou #RRGGBB
format de notation hexadécimal RVB
5.2. Les notations hexadécimales RVB:
#RRGGBB
La notation de couleur hexadécimale CSS permet de spécifier une couleur en donnant aux canaux des nombres hexadécimaux, ce qui est similaire à la façon dont les couleurs sont souvent écrites directement dans le code informatique. C'est aussi plus court que d'écrire la même couleur en
rgb()
notation.La syntaxe de a
<hex-color>
est un<hash-token>
jeton dont la valeur se compose de 3, 4, 6 ou 8 chiffres hexadécimaux. En d'autres termes, une couleur hexadécimale est écrite sous la forme d'un caractère de hachage, "#", suivi d'un certain nombre de chiffres 0-9 ou de lettres af (la casse des lettres n'a pas d'importance -#00ff00
est identique à#00FF00
).Le nombre de chiffres hexadécimaux donné détermine comment décoder la notation hexadécimale en une couleur RVB:
6 chiffres
La première paire de chiffres, interprétée comme un nombre hexadécimal, spécifie le canal rouge de la couleur, où
00
représente la valeur minimale etff
(255 en décimal) représente le maximum. La paire de chiffres suivante, interprétée de la même manière, spécifie le canal vert et la dernière paire spécifie le bleu. Le canal alpha de la couleur est entièrement opaque.EXEMPLE 2
En d'autres termes,#00ff00
représente la même couleur quergb(0 255 0)
(un vert lime).
Voir le brouillon de l'éditeur du module de couleur CSS niveau 4
Exemples
rgb()
Fonction CSS ( le caractère espace peut être substitué au caractère virgule, par exemple 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)']
Notation hexadécimale CSS RGB RRGGBB
// RGB hexadecimal notation as strings in resulting array
['#000000', ...,'#00ff00', ...'#ffffff']
Critères gagnants
Moindres octets utilisés pour écrire le programme.
la source
Réponses:
R , 25 octets
Essayez-le en ligne!
la source
a:b-c
fait un vecteur dea-c
àb-c
, inclus (il fait un vecteur dea
àb
, puis soustraitc
de chaque entrée).Python 2 ,
77403937 octetsEssayez-le en ligne!
-1 octet grâce à Digital Trauma
-2 octets grâce à dylnan
la source
8**8
au lieu de1<<24
sauvegarder un octetprint['...
PowerShell ,
2826 octetsEssayez-le en ligne!
Boucles de
1
à16mb
(16777216). À chaque itération, nous utilisons l'-f
opérateur ormat agissant sur le nombre actuel pré-décrémenté par--$_
rapport à la chaîne"#{0:x6}"
. Ici, nous spécifions lesx
valeurs he , complétées en6
chiffres, avec un hachage#
devant. Sur TIO, limité à 60 secondes / 128 Ko de sortie. Modifiez le1
pour(16mb-5)
voir comment cela se termine .la source
JavaScript (ES7),
656261 octetsEnregistré
34 octets grâce à @tshRenvoie un tableau de
#RRGGBB
chaînes.Essayez-le en ligne! (sortie tronquée)
la source
8**8
au lieu de1<<24
. Cela fonctionnerait aussi sur JS.Lisp commun, 42 octets
Essayez-le en ligne!
la source
format
golf que j'ai vu. +1 sur cette seule base.Japt, 14 octets
Sorties comme
#rrggbb
.Essayez-le (limité aux 4096 premiers éléments)
Explication
la source
ù
. Un autre cas d'utilisation typique consiste à l'utiliser comme compteur lorsque vous devez incrémenter une variable lors, par exemple, d'un mappage sur un tableau. Et, bien sûr, comme il s'agit d'une variable, vous pouvez simplement lui attribuer une valeur, si nécessaire.0
est le seul entier à un seul chiffre qui a sa propre variable, cependant - eh bien, techniquement, 7 comme la variable d'entrée 6U-Z
par défaut0
. Les autres entiers affectées aux variables Japt sont:-1, 10-16, 32, 64 & 100
.Haskell, 41 octets
Essayez-le en ligne!
la source
05AB1E ,
151410 octetsEssayez-le en ligne.
Explication:
la source
Lot, 87 octets
Sorties au format CSS. La substitution de variable se produit avant l'
for
analyse de l' instruction, de sorte que le code réel est le suivant:la source
C # (Visual C # Interactive Compiler) , 47 octets
Essayez-le en ligne!
la source
C # (.NET Core) , 75 octets
Essayez-le en ligne!
Port de la version JAVA 10 avec format de chaîne interpolé C #
la source
K (oK) , 19 octets
Solution:
Essayez-le en ligne! (limité aux 500 premiers numéros)
Explication:
Vider les chaînes RVB. Convertissez chaque nombre entre 0 et 16777216 en base 256, puis convertissez-le en chaînes ...
la source
MATL ,
1715 octetsEssayez-le en ligne!
La version TIO affiche uniquement les 2 ^ 10 premiers pour ne pas expirer. J'ai inclus l'itération finale dans le pied de page pour montrer qu'elle se termine bien à
#FFFFFF
. Enregistré un octet en remplaçant par aufprintf
lieu d'assembler manuellement la chaîne. Génère une liste séparée par des virgules.Explication
la source
APL (Dyalog Unicode) ,
474320 octetsEssayez-le en ligne!
6⍴
4⍴
Merci à @Dzaima et @ngn pour les 23 octets.
Utilise
⎕IO←0
.Comment:
la source
Rubis , 31 octets
Essayez-le en ligne!
la source
%
prendre une chaîne aussi longue et un tableau aussi long. Pour info, vous pouvez enregistrer un octet en utilisant un saut de ligne littéral au lieu de\n
.V , 25 octets
Essayez-le en ligne! (remplacé
16777215
par31
)Explication
la source
Lot, 69 + 4 = 73
g.cmd, 69
Enregistre la valeur hexadécimale avec formulaire
#RRGGBB
dans un «tableau».g.cmd
doit être appelé en utilisantcmd /V/Q/K g.cmd
. C'est de là que vient le + 4/V/Q
, qui compte pour 4 caractères supplémentaires par rapport à justecmd /K g.cmd
. Cela met en place un environnement qui a le «tableau» en mémoire. L'exécution prend également une éternité, utilisez donc des valeurs très faibles pour essayer ou interrompre l'exécution à l'aide deCtrl+C
Panne
Invocation
/V
permet une expansion retardée, mais est plus courte quesetlocal EnableDelayedExpansion
, c'est pourquoi nous avons besoin de l'cmd
appel en premier lieu/Q
omet la sortie et est équivalent à@echo off
/K
vous permet d'exécuter une expression (dans ce casg.cmd
) et ne se ferme pas par la suite, vous pouvez donc vérifier le 'tableau' en utilisantset #
g.cmd
Ce bit utilise une astuce documentée ici pour convertir un nombre normal en hexadécimal, puis enregistre cette valeur dans un «tableau».
J'ai appelé cette structure de stockage un «tableau», mais ce n'est pas vrai, car les vrais tableaux n'existent pas dans Batch. MAIS vous pouvez nommer des variables pour qu'elles aient des noms de type tableau, comme ceci:
ou, comme dans ce cas:
Vous pouvez toujours y accéder via
!#%position%!
la source
/V/Q/K
-être peut-être revendiqué comme "arguments" pour l'interprète et compter comme "3 + 69 = 72". metaGroovy , 53 octets
Définition de fonction. c () renvoie une ArrayList (je suppose que c'est bien, même si la question demande un tableau).
Non golfé, avec des types implicites:
Essayez-le en ligne!
la source
Java 10,
8784 octets-3 octets grâce à @ archangel.mjj .
Essayez-le en ligne (limité aux premiers
4,096
articles).Explication:
la source
r[i]="".format("#%06X",i);
"".format("#%06X",i)
avant depuis que je l'ai vu dans la réponse Python, mais j'ai laissé tomber la réponse parce que je ne pouvais pas le faire fonctionner assez rapidement pour TIO. Ensuite, j'ai vu tout le monde sortir les premiers4,096
éléments sur TIO, alors j'ai écrit à nouveau la réponse, oubliant"#%06X"
...>. <var r
en Java ..var
Java.PHP,
6862 octetsCelui-ci est censé être placé dans un fichier, le tableau est retourné à la fin, pour être utilisable.
Pour avoir accès au tableau, donnez simplement le résultat de l'inclusion (par exemple:)
$a = include 'xyz.php';
à une variable.Merci à @manatwork pour m'avoir sauvé 6 octets et corrigé une erreur.
la source
%1$06d
chaîne de format? Et je ne vois aucune raison d'utiliser1$
. Vous pouvez réduire la longueur en incluant le « # » dans la chaîne de format:#%06x
. Ce qui serait utile lors de l'ajout de caractères supplémentaires pour fixer la plage, car il compte actuellement jusqu'à 16777216 = # 1000000.%d
à%x
. Et j'ai complètement oublié de déplacer l'#
intérieur dusprintf()
appel. Vous m'avez sauvé 6 octets. MerciMATL , 11 octets
Essayez-le en ligne! (avec seulement trois chiffres hexadécimaux au lieu de six)
Explication
la source
Frapper + jot, 22
Essayez-le en ligne!
la source
Perl 5 , 31 octets
Essayez-le en ligne!
la source
Lua ,
4745 octetsEssayez-le en ligne!
la source
s
et enregistrer un octet.T-SQL,
122117 octetsRenvoie une table de
#RRGGBB
chaînes de 16 777 216 lignes . Le saut de ligne est uniquement pour la lisibilité:Utilise un CTE récursif pour une table numérique de 0 à 2 ^ 24-1, puis utilise la
FORMAT
commande intégrée (disponible dans SQL 2012 ou version ultérieure) pour le transformer en une chaîne hexadécimale à 6 chiffres . Fixez le#
à l'avant, et nous avons terminé.Edit 1:
POWER()
Fonction supprimée , le nombre était plus court: Pla source
Gelée , 12 octets
Essayez-le en ligne!
la source
Gelée , 8 octets
Essayez-le en ligne! (note: utilise
2
plutôt que6
comme6
temps mort sur TIO)Soumission des fonctions (parce que les programmes complets Jelly imprimeront par défaut des listes de chaînes sans aucun délimiteur entre eux, ce qui rendra difficile de voir les limites). Le lien TIO contient un wrapper pour imprimer une liste de chaînes en utilisant des sauts de ligne pour les séparer.
Explication
la source
PHP , 43 octets
Essayez-le en ligne!
la source
1<<24
->8**8
devrait fonctionner ici pour, crédits à @DigitalTraumaScala , 40 octets
Essayez-le en ligne!
la source
Perl 6 , 26 octets
Essayez-le en ligne!
Utilise le même format que tout le monde. Temps mort sur TIO.
Ou, au format RVB:
31 octets
Essayez-le en ligne!
la source
rgb(0, 0, 0)
inclure la chaînergb
.