Sí, el buen viejo GIF. Amado por su versatilidad, odiado por sus patentes y parcialmente obsoleto debido a sus limitaciones (y patentes), el GIF consiste, en el núcleo, en una paleta de colores y una imagen indexada a la paleta comprimida usando el algoritmo LZW.
Su tarea es escribir un programa que lea una imagen en formato ASCII PPM (número mágico "P3") desde la entrada estándar, y escriba la misma imagen (idéntico píxel por píxel) en formato GIF en la salida estándar. La salida puede ser en forma binaria o texto ASCII con cada byte representado por un número entre 0 y 255 (inclusive), separados por espacios en blanco.
Se garantiza que la imagen de entrada no tendrá más de 256 colores diferentes.
Puntuación:
Su programa se probará en 3 imágenes de muestra, y su puntaje se calculará como:
tamaño del programa + suma (tamaño de salida - tamaño de referencia para cada imagen de muestra)
El puntaje más bajo gana.
Requisitos:
- Su programa debe funcionar con cualquier tipo similar de imágenes de varios tamaños, y no debe limitarse a las imágenes de muestra. Podría, por ejemplo, restringir las dimensiones a múltiplos de 2 o asumir que el color máximo de ppm es 255, pero aún así debería funcionar con una amplia variedad de imágenes de entrada.
- La salida debe ser un archivo GIF válido que se pueda cargar con cualquier programa compatible (después de volver a convertirlo en binario si se usa la opción de salida ASCII).
- No puede utilizar ninguna función de procesamiento de imágenes (integrada o de terceros), su programa debe contener todo el código relevante.
- Su programa debe ser ejecutable en Linux utilizando software disponible gratuitamente.
- El código fuente debe usar solo caracteres ASCII.
Imágenes de muestra:
Aquí están las 3 imágenes de muestra que se utilizarán para calificar. Puede descargar un archivo zip con los archivos ppm (use el botón de descarga en la parte superior de esa página). O puede convertirlos de las imágenes png a continuación, usando ImageMagick con el siguiente comando:
convert file.png -compress none file.ppm
También proporciono las sumas de verificación MD5 de los archivos ppm para su confirmación.
1. ámbar
Tamaño de referencia: 38055
MD5 suma de comprobación de ppm: d1ad863cb556869332074717eb278080
2. ojos azules
Tamaño de referencia: 28638
MD5 suma de comprobación de ppm: e9ad410057a5f6c25a22a534259dcf3a
3. pimientos
Tamaño de referencia: 53586
MD5 suma de comprobación de ppm: 74112dbdbb8b7de5216f9e24c2e1a627