Courrier Ception
Le programme doit accepter n'importe quelle chaîne en entrée et produire une image pixel qui montre la chaîne d'entrée dans Courier. Toutes les lettres contenant un «trou» (comme abdegopqABDPQR
etc.) entouré de pixels noirs doivent également être remplies de noir.
Contribution
Le programme doit pouvoir accepter n'importe quelle chaîne ASCII en entrée. L'entrée peut être comme vous le souhaitez, tant que le code de programme lui-même n'a pas à changer pour accepter une entrée différente. (À l'exception, par exemple, du nom du fichier à lire.) Pas de failles standard. Vous pouvez supposer que chaque entrée contient au moins une lettre imprimable.
Production
La sortie doit être un graphique de pixels en noir et blanc (pas de gris) qui montre la chaîne écrite en Courier (en noir, fond blanc), avec les «trous» spécifiés remplis. La taille de la police de la chaîne entière doit être constante (ce qui signifie pas de mise à l'échelle différente pour chaque lettre différente) de sorte que les lettres de taille normale (par exemple, ABCDEFGHIJKLMNOPRSTUVWXYZ
mais j et Q sont plus grandes) doivent avoir une hauteur d'au moins 10 px. (Vous n'avez pas besoin de l'écrire dans un fichier, tout type d'affichage est correct tant qu'il est généré sous forme de pixelgraphics, comme par exemple une toile en JavaScript.) Veuillez poster ce graphique avec votre réponse.
L'accès aux bibliothèques courier.ttf / font est autorisé.
Le programme doit également compter le nombre de pixels noirs et l'écrire sur la console ou quelle que soit la méthode de sortie préférée à la fin.
But
Le score est évalué comme suit: Le code de programme complet doit être utilisé comme chaîne d'entrée pour votre programme. Le nombre de pixels noirs sera votre score. Le code de programme qui contient des lettres non imprimables ou non ASCII n'est pas autorisé. (Ainsi que les failles standard.) Plus le score est bas, mieux c'est.
Réponses:
Mathematica, 4864 pixels
Voici l'image:
Dans Mathematica, lorsque vous écrivez un "programme", vous écrivez simplement un extrait. Donc, cela attend l'entrée stockée dans
j
et la dernière chose qu'elle renvoie est l'image et le nombre. Cela crache également un tas d'erreurs, car je ne vérifie pas les limitesl
, mais cela produit le résultat souhaité de toute façon.où
%
fait référence à ladite dernière sortie.Merci à Geobits pour l'idée de l'algorithme. Je remplis l'image du coin supérieur gauche d'une intensité non valide, puis je remplace tous les pixels blancs restants par des pixels noirs et ceux non valides par des blancs.
Notez que la
FreeQ
vérification n'est pas réellement nécessaire pour que le programme fonctionne correctement, mais pour qu'il se termine dans un délai raisonnable. Si je le laissais de côté, je marquerais en fait environ 300 pixels de moins.la source