Étant donné 3 octets ou RVB en entrée, calculez les valeurs CMJN les plus proches et sortez-les.
- créer soit une fonction avec des paramètres et une valeur de retour, soit un programme qui fonctionne sur stdin / stdout
- utilisez le profil de couleur de votre choix, mais fournissez une référence
- l'entrée peut être soit des valeurs numériques distinctes dans la plage [0; 255] soit une chaîne hexadécimale à 6 chiffres
- la sortie doit être des valeurs numériques distinctes allant de [0; 1] ou [0; 100]
- golf à code standard: pas d'échappatoire , gain de code le plus court
- les idées extravagantes sont les bienvenues
exemples de données:
input output
108,174,106 [0.3793103448275862, 0.0, 0.3908045977011494, 0.3176470588235294]
0,0,0 0,0,0,1
170,255,238 33,0,7,0
0x0088ff 1,0.4667,0,0
[250,235,215] [0,6,14,1.96]
#123456 .7907,.3953,0,.6627
- La cartographie non étalonnée est fine et probablement la plus simple
- Aucune validation d'entrée requise; les flottants sont autorisés (de 0 à 255), mais peuvent également être arrondis
- Le format de sortie doit être clairement commenté ou évident; c'est à dire:
- CMJN dans cet ordre
- n'a pas d'importance si le pourcentage [0; 100] ou les nombres purs [0; 1]
- Les tests devraient inclure l'exemple trivial [0,0,0].
Ce site contient le plus de chiffres d'outils en ligne que j'ai pu trouver. Est-ce que quelqu'un connaît un outil qui donne plus de 4 chiffres?
code-golf
conversion
color
Titus
la source
la source
~
.Réponses:
Dyalog APL ,
1615 octets1 moins
1-
X divisé par
÷
Y , suivi de,
255 en divisant255÷⍨
Y⊢
, oùX est lui-même
⊢
(c'est-à-dire la liste des valeurs RVB) etY est le maximum
/⌈
(des valeurs RVB).TryAPL!
Crédits:
∘ -1 octet par ngn .
la source
⍨
! Belle émoticône⍣
et⍤
. J'espère que nous aurons⍥
et⍢
bientôt.ಠ
me ferait plaisir!C # ,
88868584 octetssortie pour
108,174,106
:Puisque OP autorise la fonction, je n'ai soumis que le lambda. Vous pouvez trouver une démonstration en cours sur .NetFiddle . Je ne suis pas golfeur, je poste pour le plaisir. C'est aussi ma première réponse \ o /. N'hésitez pas à commenter toute amélioration :)
Félicitations à Leaky Nun pour la formule.
mise en garde: cela ne fonctionne pas pour [0,0,0] (merci Titus)
la source
1.0-x/j
? Vous ne pouvez sûrement pas faire1-x/j
?a[3]
et vous ne semblez pas spécifier de taille fixe poura
, vous pouvez donc faire{r,g,b}
eta[3]=j*j
(car, de toute façon,1 * a = a
).a
avec leselect()
. Si j'utilisea[3]
comme ça, je serai hors de portée et je lancerai, n'est-ce pas?#
devant la ligne. :)Python, 46 octets
Nécessite une entrée flottante en Python 2, assez sûr que non en 3.
la source
JavaScript (ES6),
5851 octetsAccepte un tableau
[R, G, B]
(ajoutez 7 octets pour des paramètres distincts) et retourne un tableau[C, M, Y, K]
à l'aide du mappage des couleurs non calibré.la source
a
mixe son contenu? C'est bizarre. 3) Avez-vous testé [0,0,0]? Aucune exception dans ES, mais ressemble à une division par zéro.[...a,m=Math.max(...a)]
votre solution de baie. 5) Pouvez-vous jouer à l'autre en utilisant un tableau en entrée? Envisagez d'utilisera.0
etc. au lieu de.map
.Mathematica,
362833 octetsAprès la libéralisation des formats d'E / S, a continué à jouer:List@@#~ColorConvert~"CMYK"&
Fonction anonyme, qui fait ce qui est demandé.
L'ancienne fonction prend trois arguments de 0 à 255 (tout ce qui dépasse cette plage sera automatiquement coupé dans cette plage) et retourne un tableau de valeurs "CMJN" entre
0.
et1.
Exemple (pour l'ancienne fonction):
Étant donné que les tableaux sont autorisés en entrée, 33 octets:
Bien sûr , les intégrés poignées de fonction
{0, 0, 0}
correctement et revient{0, 0, 0, 1}
.la source
/255
?Bash + ImageMagick, 69 octets
Exemple:
la source
SmileBASIC,
7372 octetsPourrait être beaucoup plus court.
la source
J=MAX(R,G,B)
?Pyth,
2421182421 octetsLa vie est en effet un aller-retour.
Suite de tests.
Exemple d'entrée:
108,174,106
Exemple de sortie:
[0.3793103448275862, 0.0, 0.3908045977011494, 0.3176470588235294]
Exemple d'entrée:
0,0,0
Exemple de sortie:
[0, 0, 0, 1.0]
Formule utilisée:
Ancienne formule: http://i.stack.imgur.com/ZtPD6.gif
Ancienne formule: http://i.stack.imgur.com/Nqi9F.gif
la source
Lithp , 114 octets
Essayez-le en ligne!
max
prend n'importe quel nombre d'arguments)Je ne suis pas sûr que ce soit vrai. Les deux premiers résultats avec les exemples de données sont corrects, mais les autres ne le sont pas (voir la section Essayer en ligne .)
Utilise bien l'implémentation décrite comme suit:
la source
PHP 7,
123110105 octetsEntrée en couleur RVB
100 240 75
Affiche les valeurs CMJN sous forme décimale dans la
0...1
plage.Beaucoup d'octets enregistrés grâce à Titus.
Exemple d'utilisation:
Testez en ligne
Entrée en couleur HEX
#123456
, 202 octets54 octets de fonction pour empêcher la division par zéro, probablement jouable au golf ou amovible.
Obtient comme couleur RVB d'entrée comme HEX
#123456
et sort CMJN comme décimal dans0...1
plage .Exemple d'utilisation:
la source
separate numeric values
signifie que vous pouvez simplement prendre$h=$argv;
et utiliser$h[1]
au lieu de$h[0]
etc. J'aime l'NAN
astuce; mais cela ne donne-t-il pas lieu à des avertissements?strtr
est probablement plus court questr_replace
, etNAN
n'a besoin d'aucune qotation (produira des avis, mais ceux-ci ne sont pas affichés dans la configuration par défaut).1/0
résulteINF
) ni en PHP 5 (1/0
=>false
).$argv
astuce du tableau en ligne de commande! J'ai ajouté la version PHP. Il fonctionne avecNAN
parce que lorsque vous l'utilisez,str_replace
il convertit implicitement le nombre en chaîne afin qu'il sorteNAN
, en fait, si vous vérifiez sur ce lien , vous verrez qu'il sort enNAN
raison destr_replace("INF"
au lieu destr_replace("NAN"
. Je ne pouvais pas le faire fonctionner en utilisantstrtr
. J'ai ajouté le@
pour supprimer les avertissements.$n/0
estINF
, mais0/0
estNAN
(également en PHP 7.0). Vous pouvez enregistrer 4 octets avecstr_replace(NAN,0,$s)
ou 6 octets avecstrtr($s,["NAN"=>0)
.strtr()
;PHP, pas en compétition
J'étais trop tentée de poster la mienne.
Entrée RVB, 74 octets
ou 68 octets avec une virgule de fin dans la sortie: supprimer
[$i>3]
.Courez avec
php -r '<code>' <red-value> <green-value> <blue-value>
.Entrée HEX, 100 octets
Courez avec
php -nr '<code>' RRGGBB
.Cette approche prendrait 75 octets pour l'entrée RVB:
remplacer
foreach($a=array_map...as$c)
parforeach($a=$argv as$c)if($i++)
.la source
C, 155 octets
J'essaie de comprendre comment c'est plus possible de jouer au golf.
Usage:
Production:
la source
i>0?i>1?i>2
j>0?
17 pour se débarrasser de la boucle et 6 pour diviser laj
définition.F *
). Mais j'ai trouvé un autre octet pour jouer au golf en C99.j>0?j:1
peut êtrej+!j
d'atteindre -3 octets.C
macro est incorrecte:1-x/1
pourj==0
? Je pense que ça devrait l'être1-(j>0?x/j:1)
.Hoon , 110 octets
Utilisez la bibliothèque à virgule flottante simple précision. Créez une nouvelle fonction générique qui prend
a
. Prêts
àsub
curry avec.1
pour plus tard, etj
à se repliera
avecmax
.Cartographiez
a
en divisant chaque élément parj
, en trouvant le minimum de 1 et 1 pour normaliser NaN, puis soustrayez 1 avecs
. Ajoutez1-j/255
à la fin de cette liste.la source