Le monde de l'art est plein de couleurs, mais le monde du réseau est encore plus plein que le monde de l'art de différentes couleurs et de ses rendus. C'est pourquoi nous devons savoir comment convertir un type de format de couleur en un autre.
Le défi est évident:
Écrivez un programme / une fonction qui convertit un code HEX donné ( #00ff0080
, par exemple) en RGBA (comme rgba(0, 255, 0, 0.5)
).
Règles:
- Les bibliothèques externes / intégrées pour convertir HEX en RGBA sont interdites. Cependant, jQuery et les remplaçants de syntaxe comme celui-ci sont acceptables.
- Les règles d'entrée / sortie standard s'appliquent.
- Le format de l'alpha peut être compris entre (1 == 100%) ou l'autre (100 == 100%) ce qui n'est pas vraiment important.
- La sortie est flexible , tant qu'elle renvoie les 4 valeurs converties (en tant que chaîne, tableau, liste, votre choix).
- Vous pouvez choisir de prendre l'entrée sans le
#
au début. Par conséquent, vous pouvez prendre l'entrée en tant que#RRGGBBAA
ouRRGGBBAA
. Vous pouvez supposer que le code hexadécimal (à l'exclusion du#
) comportera toujours 8 caractères. - Vous devez diviser toutes les valeurs par 255, y compris l'alpha. La précision décimale minimale (pour l'alpha sera de 2 décimales).
Cas de test
Input: 00ff0080
Output: 0, 255, 0, 0.5
Notation
code-golf , le code avec le moins d'octets gagne.
#
, auquel cas ce serait juste une valeur entière de 32 bits. Est-il légal de le prendre comme ça?Réponses:
JavaScript (ES6),
735450 octets(Enregistré quelques octets grâce à @LeakyNun, le défi édité et @CraigAyre.)
la source
eval
place deparseInt
:s=>s.match(/../g).map((x,i)=>eval('0x'+x)/(i-3?1:255))
eval
est une excellente alternative auparseInt
golf, merci!/../g
. Vous pourriez être en mesure de le réduire encore plus en utilisantreplace
overmatch
/map
Japt , 13 octets
Prend l'entrée sous forme de chaîne, sans le début
#
. Génère la valeur rgba sous forme de tableau.Essaye-le
Explication
Nous prenons implicitement la chaîne en entrée via une variable
U
."00ff0080"
Divisez la chaîne en un tableau d'éléments de longueur 2.
["00","ff","00","80"]
Mappez sur le tableau et convertissez chaque élément d'une chaîne de base 16 en nombre décimal. En raison de la nouvelle ligne suivante, ce tableau est implicitement affecté à la variable
U
.[0,255,0,128]
Pop le dernier élément du tableau.
128
Divisez-le par 255.
0.5019607843137255
Poussez le résultat dans
U
puis sortez implicitement le tableau final.[0,255,0,0.5019607843137255]
la source
PHP , 63 octets
Sortie sous forme de tableau
Essayez-le en ligne!
PHP , 80 octets
Sortie en tant que valeur rgba, entrée sans
#
Essayez-le en ligne!
PHP , 88 octets
Sortie en tant que valeur rgba, entrée avec
#
Essayez-le en ligne!
la source
C (gcc) , 139 octets
Essayez-le en ligne!
Mon autre tentative a atteint 145 octets . Je ne suis pas beaucoup un golfeur C, donc cela pourrait probablement être plus court.
la source
05AB1E , 9 octets
Essayez-le en ligne!
Au moins, nous avons des supporters comme Emigna qui utilisent souvent du bon sens ... (c'est ce que vous obtenez pour jouer au golf toute la journée et ensuite vous commencez à produire des trucs comme
2ô16öRć255/¸ìR
ಠ_ಠ)la source
2ôH`žz/)
Gelée ,
1514 octetsEssayez-le en ligne!
Comment ça fonctionne
-1 octet grâce à @EricTheOutgolfer
la source
PHP, 72 octets
La version de sortie du tableau de Jörg est imbattable; mais il existe d'autres options:
Exécuter en tant que tuyau avec
-F
.#
n'a pas d'importance, sortie csv simpleou 73 octets (exécuté avec
-R
):74 octets avec les espaces:
pas si simple, 81 octets :
la source
Empilé ,
474541 octetsEssayez-le en ligne!
la source
Excel, 99 octets
la source
SmileBASIC, 50 octets
La chaîne hexadécimale est convertie en nombre à l'aide de VAL (), puis RGBREAD extrait chaque octet. #L est une constante avec la valeur 256.
RGBREAD est conçu pour extraire les canaux d'une couleur ARGB, mais en réalité il divise simplement un entier de 4 octets en 4 octets séparés, donc l'ordre n'a pas d'importance.
la source
Perl 6 , 42 octets
Essayez-le en ligne!
la source
JS ES2015, 84 octets
c'est une fonction. Exécutez-le en utilisant
la source
Python 3 , 62 octets
Essayez-le en ligne!
la source
q / kdb +, 43 octets
Solution:
Exemple:
Explication:
la source
APL (Dyalog) , 24 octets
Requiert
⎕IO←0
ce qui est par défaut sur de nombreux systèmes. Demande d'entrer en majuscules sans#
.Essayez-le en ligne!
⎕D,⎕A
D igits suivie d' une lphabet⍞⍳⍨
demander la saisie de texte (mnémonique: console avec guillemet) et trouver le ɩ ndex de chaque lettre4 2⍴
forme de r comme matrice à quatre colonnes et deux colonnes⍉
transposer (car la conversion de base fonctionne en colonnes)16⊥
évaluer comme base seize⊢
rendement (sert à séparer 3 et 16)256÷⍨@3
diviser le 4 e élément par 256la source
Python 2 , 54 octets
Essayez-le en ligne!
la source
Yabasic , 96 octets
Encore une autre réponse de base ; Prend les entrées sous forme de chaîne et les sorties vers la console.
Essayez-le en ligne!
la source
?
.Excel VBA, 90 octets
Une fonction de fenêtre immédiate VBE anonyme qui prend les entrées de la plage
[A1]
et les sorties vers la fenêtre immédiate VBE.la source
Vim, 46 octets
Prend la saisie sans le
#
et revient en imprimant sur l'écran.la source