Les défis de caméléon sont apparemment une mauvaise chose . Dommage, les caméléons sont de belles créatures. Le temps de changer!
Comme nous le savons tous, de nombreux caméléons possèdent une remarquable capacité à se fondre dans leur environnement en changeant la couleur de leur peau. C'est aussi l'objectif de ce défi.
Défi
Imaginez un carré de neuf pixels. Huit pixels sont les environs. Au centre se trouve le caméléon.
Comme ça:
Le caméléon essaie naturellement de se fondre dans son environnement. Il le fait en changeant sa couleur à la moyenne de celle des pixels environnants. Donc, dans ce cas, le caméléon changerait de couleur .
Objectif
Compte tenu des couleurs des pixels environnants, sortez la couleur du caméléon.
La couleur du caméléon est définie comme le total de tous les rouges, verts et bleus dans les pixels ÷ 8.
Contribution
Un tableau de valeurs de couleur pour les huit pixels environnants, commençant en haut à gauche et se poursuivant dans le sens horaire, comme ceci:
[[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>],[<red>,<green>,<blue>]]
Vous pouvez choisir de recevoir une entrée sous une forme différente, à condition qu'elle se compose de huit triplets de nombres décimaux 0-255.
Si vous recevez des entrées sous une forme différente, les nombres doivent être d'une longueur cohérente ou avoir un séparateur non numérique entre eux. Les triplets doivent avoir un caractère de séparation, sauf s'ils sont remplis de 0 à 9 chiffres. (Par exemple, 044200255044200255044200255044200255044200255044200255044200255044200255
est valide, ainsi que 44 200 255 44 200 255 44 200 255 44 200 255 44 200 255 44 200 255 44 200 255 44 200 255
et 44?200?255$44?200?255$44?200?255$44?200?255$44?200?255$44?200?255$44?200?255$44?200?255
, mais 4420025544200255442002554420025544200255442002554420025544200255
ne l'est pas.)
Production
Un tableau / chaîne / etc. contenant les couleurs du pixel central (en décimal), comme ceci:
[<red>,<green>,<blue>]
Dans le cas où vous produisez autre chose qu'un tableau: les nombres doivent être de longueur cohérente ou avoir un séparateur non numérique entre eux. (Par exemple, il 044200255
est valide 44 200 255
, mais 44200255
ne l'est pas.)
Les nombres peuvent ne pas contenir de décimales, par exemple, ils ne 44.0 200 255.0
sont pas valides.
Arrondi
La sortie doit être arrondie à l'entier le plus proche. (Les moitiés doivent être arrondies.) Par exemple, si la somme de tout le rouge est 1620 , vous devez produire 203
, non 202
ou 202.5
.
Exemples
Les photos sont à titre indicatif seulement. Le pixel du milieu est la sortie, les pixels environnants sont l'entrée.
Contribution:
[[200,200,200],[200,200,200],[200,200,200],[200,200,200],[200,200,200],[200,200,200],[200,200,200],[200,200,200]]
Production:
[200,200,200]
Contribution:
[[0,0,0],[255,255,255],[0,0,0],[255,255,255],[255,255,255],[0,0,0],[255,255,255],[0,0,0]]
Production:
[128,128,128]
Contribution:
[[0,200,200],[200,0,200],[200,200,0],[60,200,0],[200,0,200],[0,200,220],[2,200,0],[0,0,0]]
Production:
[83,125,103]
Contribution:
[[0,56,58],[65,0,200],[33,200,0],[60,33,0],[98,0,200],[0,28,220],[2,200,0],[99,0,5]]
Production:
[45,65,85]
Les soumissions peuvent être un programme complet ou une fonction. Les règles d' E / S standard et d' échappatoire s'appliquent.
Réponses:
MATL,
84 octetsEssayez-le en ligne!
4 octets économisés grâce au bécher!
Explication:
la source
s8/
parXm
(c'est-mean
à- dire en bas des colonnes). Vous pouvez également spécifier l'entrée3 x 8
pour commencer et vous débarrasser de3e!
YmYo
devrait le faire ... il suffit de prendre l'entrée comme[[R,G,B];[R,G,B];...]
avec des points-virgules entre les lignes RVB.Yo
arrondir ou arrondir au plus près avec des liens arrondis? Le défi veut ce dernier.Python, 38 octets
Arrondit la moyenne (vers l'entier le plus proche, avec des moitiés arrondies) en ajoutant 4 à la somme, puis en divisant le plancher par 8 via le décalage de bits
>>3
.la source
Gelée , 5 octets
Suite de tests . (Légèrement modifié de manière à vérifier tous les tests en même temps.)
la source
C,
15112310391Nécessite 24 paramètres transmis au programme, dans l'ordre RGBRGB ... et sort le triplet RGB sans nouvelle ligne.
la source
main(c,v)char**v;{
économiser 2 octets? +1 également pour <3 dans le code source!Pyth , 8 octets
Suite de tests .
la source
Pyke, 7 octets
Essayez-le ici!
la source
J, 11 octets
Prend l'entrée comme un tableau 8x3 où chaque ligne est une valeur RVB
Explication
la source
JavaScript,
756455 octetsUne réponse JavaScript pour commencer.
Edit: enregistré 11 octets grâce à Dendrobium , et 9 autres grâce à Neil .
la source
a=>a.reduce((p,c)=>p.map((e,i)=>e+c[i])).map(x=>x+7>>3)
[[0,200,200],[200,0,200],[200,200,0],[60,200,0],[200,0,200],[0,200,220],[2,200,0],[0,0,7]]
donne 83, 125, * 104 * au lieu de 83, 125, * 103 * avec votre code.ceil
. 64 octets:a=>a.reduce((p,c)=>p.map((e,i)=>e+c[i])).map(x=>(x/8).toFixed())
x+4>>3
devrait arrondir correctement.Lisp -
180179 octetsEDIT: formaté pour la poursuite du golf.
Le fait-il de la bonne façon , je suppose. Non testé.
a
est juste moyenr
est l'arrondi correct de ce défi, puisque Lispround
arrondit à l'entier pair le plus prochec
fait le vrai travail, en prenant la saisie dans le format'((R G B) (R G B) (R G B) (R G B) (R G B) (R G B) (R G B) (R G B))
et en renvoyant une'(R G B)
liste contenant la réponse.la source
Nim ,
13412611510878 bytesDéfinit une procédure anonyme, qui nécessite l'entrée transmise sous forme de séquence imbriquée et les sorties sous forme de tableau à 3 éléments. La procédure ne peut être utilisée que comme argument d'une autre procédure; pour tester, utilisez le wrapper suivant:
Une séquence Nim est un tableau avec
@
devant, comme@[1, 2, 3]
. Un apport à cette procédure pourrait donc être:la source
Japt, 8 octets
Essayez-le
Alternative, 9 octets
Essayez-le
la source
Forth (gforth) , 65 octets
Essayez-le en ligne!
Prend les entrées comme arguments de pile (ordre RVB)
Explication
Pour chacun des 3 canaux de couleur:
Explication du code
la source
Enchantements runiques , 41 octets
Essayez-le en ligne!
Utilise 3 pointeurs d'instructions pour analyser l'entrée dans le bon ordre (car les valeurs d'entrée sont toujours dans l'ordre
RGB, RGB,...
) et tant que chacune des trois IP ne fusionne pas et ne passe pasi
trop tôt à la prochaine commande read nput (d'où tous les espaces), cela fonctionne et économise des octets sur la rotation continue de la pile pour garder la valeur correcte en haut afin de calculer les sommes.Techniquement, ce code contient une erreur dans les
x.5
valeurs d' arrondi correctement pour certaines entrées, mais cela est dû à la méthode d'arrondi par défaut utilisée par C # , qui consiste à arrondir au numéro d'événement le plus proche, plutôt qu'à la hausse et est due à des problèmes de perte de précision en virgule flottante et je n'étais pas au courant de ce problème avant d'écrire cette réponse et de vérifier les cas de test. Cela sera corrigé dans une future version , avec quelques autres choses telles que cette exception non gérée .En attendant, cette modification apporte les ajustements nécessaires.
la source