Desafío
Dada una imagen de la Luna como entrada, salida de la fase de la Luna.
Fases de la luna
Su programa recibirá una de estas imágenes en formato png y debe generar la fase exactamente como se indica:
new moon
![]()
waxing crescent
![]()
first quarter
![]()
waxing gibbous
![]()
full moon
![]()
waning gibbous
![]()
third quarter
![]()
waning crescent
![]()
Entrada
La entrada será la ruta a un archivo png de 240 px por 240 px y será una de las imágenes de arriba.
Se garantiza que los bytes de la imagen serán los mismos.
Victorioso
El código más corto gana
                    
                        code-golf
                                image-processing
                                
                    
                    
                        Decaimiento Beta
fuente
                
                fuente

Respuestas:
Nodo.js , 145 bytes
Pruébalo en línea! (genera archivos ficticios con los mismos tamaños)
¿Cómo?
Simplemente miramos el tamaño del archivo y lo convertimos en índices en dos tablas de búsqueda.
Primera parte:
Segunda parte:
fuente
Python 2 ,
223222 bytes-1 byte gracias a OMᗺ
getpixel((x,y))- devolverá el píxel RGBA enx,ygetpixel((n*48,99))[2]for n in[1,2,3,4]- devolverá el canal azul de la línea media, donden*48 ... for n in 1,2,3,4habrá 4 puntos donde la luz solar puede cubrirn*getpixel(...)- generará un valor diferente para cada columnasum(...)%13- estos valores se suman y%13se utilizan para obtener un valor único valor para cada fase, que se utilizará como índice para la lista de fases.Los píxeles se encuentran aproximadamente dentro de los círculos rojos:
fuente
Rubí, 131 bytes
Desplazamientos de bytes encontrados por la fuerza bruta: tomar el 699º byte del archivo módulo 7, por ejemplo, proporciona un índice en la primera tabla de búsqueda.
fuente
Python 2 ,
196165 bytesPruébalo en línea!
fuente
PHP (> = 5.4),
199197 bytes(-2 bytes por más golf)
Para ejecutarlo:
Ejemplo:
Notas:
-d error_reporting=0opción se utiliza para no generar avisos / advertencias.-d short_open_tag=1requiere para permitir etiquetas cortas.httpsURL como en el ejemplo anterior, OpenSSL también debería estar habilitado.¿Cómo?
Obtiene el tamaño del archivo (bytes) y crea un número único para él mediante esta fórmula:
((<first_bytes_digit> + <fourth_bytes_digit>) % 11) - 2Esta fórmula genera números del 0 al 8 y solo faltan 3.
Enfoques previos:
PHP (> = 5.4), 251 bytes
Para ejecutarlo:
Ejemplo:
Notas:
-d error_reporting=0opción se utiliza para no generar avisos / advertencias.-d short_open_tag=1requiere para permitir etiquetas cortas.httpsURL como en el ejemplo anterior, OpenSSL también debería estar habilitado.¿Cómo?
Comprueba si el color de 4 píxeles en la imagen en
40,120,80,120,160,120y200,120y decide sobre la fase de la luna de esos colores.fuente