Défi
Étant donné une image de la Lune en entrée, sortez la phase de la Lune.
Les phases de la lune
Votre programme recevra une de ces images au format png et vous devez sortir la phase exactement comme indiqué:
new moon
waxing crescent
first quarter
waxing gibbous
full moon
waning gibbous
third quarter
waning crescent
Contribution
L'entrée sera le chemin vers un fichier png de 240 px par 240 px et sera l'une des images ci-dessus.
Les octets d'image sont garantis identiques.
Gagnant
Victoires de code les plus courtes
code-golf
image-processing
Beta Decay
la source
la source
Réponses:
Node.js , 145 octets
Essayez-le en ligne! (génère des fichiers factices avec les mêmes tailles)
Comment?
Nous regardons simplement la taille du fichier et le convertissons en index dans deux tables de recherche.
Première partie:
Deuxième partie:
la source
Python 2 ,
223222octets-1 octet grâce à OMᗺ
getpixel((x,y))
- renverra le pixel RGBA àx,y
getpixel((n*48,99))[2]for n in[1,2,3,4]
- renverra le canal bleu de la ligne médiane, oùn*48 ... for n in 1,2,3,4
seront 4 points où la lumière du soleil peut couvrirn*getpixel(...)
- générera une valeur différente pour chaque colonnesum(...)%13
- ces valeurs sont additionnées et%13
sont utilisées pour obtenir une unique valeur à chaque phase, qui sera utilisée comme index pour la liste des phasesLes pixels sont approximativement à l'intérieur des cercles rouges:
la source
Rubis, 131 octets
Décalages d'octets trouvés par la force brute - prendre le 699e octet du fichier modulo 7, par exemple, donne un index dans la première table de recherche.
la source
Python 2 ,
196165 octetsEssayez-le en ligne!
la source
PHP (> = 5,4),
199197 octets(-2 octets par plus de golf)
Pour l'exécuter:
Exemple:
Remarques:
-d error_reporting=0
option est utilisée pour ne pas générer d'avis / avertissements.-d short_open_tag=1
est requis pour autoriser les balises courtes.https
URL comme l'exemple ci-dessus, OpenSSL doit également être activé.Comment?
Obtient la taille du fichier (octets) et crée un nombre unique pour lui par cette formule:
((<first_bytes_digit> + <fourth_bytes_digit>) % 11) - 2
Cette formule génère des nombres de 0 à 8 avec seulement 3 manquants.
Approches précédentes:
PHP (> = 5,4), 251 octets
Pour l'exécuter:
Exemple:
Remarques:
-d error_reporting=0
option est utilisée pour ne pas générer d'avis / avertissements.-d short_open_tag=1
est requis pour autoriser les balises courtes.https
URL comme l'exemple ci-dessus, OpenSSL doit également être activé.Comment?
Les contrôles de la couleur de 4 pixels dans l'image à
40,120
,80,120
,160,120
et200,120
et décide de la phase de lune à partir de ces couleurs.la source