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,y
getpixel((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,4
habrá 4 puntos donde la luz solar puede cubrirn*getpixel(...)
- generará un valor diferente para cada columnasum(...)%13
- estos valores se suman y%13
se 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=0
opción se utiliza para no generar avisos / advertencias.-d short_open_tag=1
requiere para permitir etiquetas cortas.https
URL 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) - 2
Esta 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=0
opción se utiliza para no generar avisos / advertencias.-d short_open_tag=1
requiere para permitir etiquetas cortas.https
URL 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,120
y200,120
y decide sobre la fase de la luna de esos colores.fuente