Vous obtenez les valeurs RVB d'une couleur. Votre tâche est simple: calculer la teinte, dans la définition la plus simple.
Supposons que les canaux avec la valeur la plus élevée, la moyenne et la plus basse sont X, Y, Z (qui sont soit rouges, verts ou bleus) et leurs valeurs sont x, y, z. La teinte de cette couleur est (h (X) -h (Y)) * (1 + (xy) / (xz)) / 2 + h (Y), où:
h(red) = 0 (or 360 if one of X or Y is blue)
h(green) = 120
h(blue) = 240
L'entrée se compose de 3 entiers de 0 à 255 qui ne sont pas tous égaux, dans un ordre cohérent. La sortie peut être des flottants ou des entiers arrondis vers le haut ou vers le bas, ce qui ne doit pas nécessairement être cohérent. Si la partie entière de la sortie est 0 ou 360, vous pouvez imprimer l'un ou l'autre.
Vous ne pouvez pas appeler de fonction intégrée pour les conversions d'espace colorimétrique, y compris les conversions implicites, par exemple lors de la manipulation d'une image.
C'est du code-golf. Le code le plus court gagne.
Exemples
Input: 0 182 255
Output: 197 (or 198)
Input: 127 247 103
Output: 110
Input: 0 0 1
Output: 240
Input: 255 165 245
Output: 307 (or 306)
modifier
Vous n'êtes pas obligé de suivre la formule exacte, mais vous n'avez qu'à donner le même résultat que la formule ci-dessus. Je voudrais également voir quelques réponses jouant la formule elle-même.