Ception de mensajería
El programa debe aceptar cualquier cadena como entrada y generar una imagen de píxeles que muestre la cadena de entrada en Courier. Todas las letras que contienen un 'agujero' (como abdegopqABDPQR
etc.) rodeado de píxeles negros también deben rellenarse de negro.
Entrada
El programa debe poder aceptar cualquier cadena ASCII como entrada. La entrada puede ser de la forma que desee, siempre que el código del programa en sí no tenga que cambiar para aceptar una entrada diferente. (Excepto, por ejemplo, el nombre de archivo del archivo que se va a leer). No hay lagunas estándar. Puede suponer que cada entrada contiene al menos una letra imprimible.
Salida
La salida debe ser un gráfico de píxeles en blanco y negro (sin gris) que muestre la cadena escrita en Courier (en negro, fondo blanco), con los 'agujeros' especificados rellenos. El tamaño de fuente de toda la cadena debe ser constante (eso significa que no hay una escala diferente para cada letra diferente) de modo que las letras de tamaño completo (por ejemplo, ABCDEFGHIJKLMNOPRSTUVWXYZ
pero j y Q son más grandes) deben tener al menos 10 píxeles de altura. (No tiene que escribirlo en un archivo, cualquier tipo de visualización está bien siempre que se genere como pixelgraphics, por ejemplo, lienzo en JavaScript). Publique este gráfico con su respuesta.
Se permite el acceso a las bibliotecas courier.ttf / font.
El programa también debe contar el número de píxeles negros y escribirlo en la consola o cualquier método de salida preferido al final.
Puntuación
La puntuación se evalúa de la siguiente manera: el código completo del programa debe usarse como cadena de entrada para su programa. El número de píxeles negros será su puntaje. El código del programa que contiene letras no imprimibles o no ASCII no está permitido. (Además de las lagunas estándar). Cuanto menor sea el puntaje, mejor.
Respuestas:
Mathematica, 4864 píxeles
Aquí está la foto:
En Mathematica cuando escribes un "programa" simplemente escribes un fragmento. Entonces esto espera la entrada almacenada en
j
y lo último que devuelve es la imagen y el recuento. Esto también arroja un montón de errores, porque no reviso los límitesl
, pero de todos modos produce el resultado deseado.donde se
%
refiere a dicho último resultado.Gracias a Geobits por la idea del algoritmo. Estoy llenando la imagen desde la esquina superior izquierda con una intensidad no válida, luego reemplazo todos los píxeles blancos restantes con píxeles negros y los inválidos con píxeles blancos.
Tenga en cuenta que la
FreeQ
verificación no es realmente necesaria para que el programa funcione correctamente, sino para que finalice en un período de tiempo razonable. Si lo dejara fuera, en realidad obtendría unos 300 píxeles menos.fuente