Les terminaux compatibles Xterm 256 couleurs ajoutent 240 couleurs aux 16 couleurs système habituelles. Les couleurs 16-231 utilisent 6 niveaux (0, 95, 135, 175, 215, 255) de rouge, vert et bleu, classés lexicographiquement. Les couleurs 232-255 sont simplement 24 niveaux de gris (8 ... 238 par 10s). Pour avoir une meilleure idée de ce dont je parle, consultez ce tableau .
Le défi
Votre objectif est de créer un programme ou une fonction qui prend en entrée des valeurs RVB et génère le nombre correspondant à la couleur Xterm la plus proche de cette valeur RVB. Étant donné que les 16 couleurs du système (couleurs 0-15) sont souvent personnalisables, vous les excluez de cette conversion.
Pour mieux définir la couleur "la plus proche", utilisez la distance Manhattan le long des composants rouge, vert et bleu. Par exemple, rgb(10, 180, 90)
est à 20 unités rgb(0, 175, 95)
(couleur 35) carabs(10 - 0) + abs(180 - 175) + abs(90 - 95) == 20
. Si la couleur d'entrée se situe également entre deux couleurs Xterm ou plus, sortez la couleur Xterm avec l'indice le plus élevé.
Exemples
R G B Xterm
0 0 0 ==> 16
95 135 0 ==> 64
255 255 255 ==> 231
238 238 238 ==> 255
90 133 140 ==> 66
218 215 216 ==> 188
175 177 178 ==> 249
175 0 155 ==> 127
75 75 75 ==> 239
23 23 23 ==> 234
115 155 235 ==> 111
Règles
- Les failles standard sont interdites
- Votre programme ou fonction est autorisé à prendre des valeurs RVB dans n'importe quel format raisonnable, y compris:
- Arguments séparés pour le rouge, le vert et le bleu
- Une liste, un tuple, un dictionnaire ou similaire
- Chaîne ou stdin séparé par un délimiteur
- Couleurs hexagonales (par exemple
#ff8000
)
- Vous pouvez supposer que toutes les valeurs r, g et b seront des entiers compris entre 0 et 255.
- Étant donné que les 16 couleurs système doivent être exclues du mappage, toutes les sorties doivent être comprises entre 16 et 255.
C'est le code-golf , donc le code le plus court l'emporte.
Kotlin ,
299290267265 octetsEmbellie
Tester
TIO
TryItOnline
la source
Lot, 266 octets
la source
Stax , 41 octets
Exécutez et déboguez en ligne!
Version ASCII de 50 octets:
la source
C (gcc),
202192157501 (141 buggé) 138134 octetsMerci @ceilingcat
Essayez-le en ligne!
la source