Kurierannahme
Das Programm muss eine beliebige Zeichenfolge als Eingabe akzeptieren und ein Pixelbild ausgeben, das die Eingabezeichenfolge in Courier anzeigt. Alle Buchstaben, die ein "Loch" (wie abdegopqABDPQR
usw.) enthalten, das von schwarzen Pixeln umgeben ist, müssen ebenfalls schwarz ausgefüllt werden.
Eingang
Das Programm muss in der Lage sein, beliebige ASCII-Zeichenfolgen als Eingabe zu akzeptieren. Die Eingabe kann beliebig sein, solange sich der Programmcode selbst nicht ändern muss, um eine andere Eingabe zu akzeptieren. (Ausgenommen zB der Dateiname der zu lesenden Datei.) Keine Standard-Regelungslücken. Sie können davon ausgehen, dass jede Eingabe mindestens einen druckbaren Buchstaben enthält.
Ausgabe
Die Ausgabe muss eine schwarzweiße (keine graue) Pixelgrafik sein, die die in Courier geschriebene Zeichenfolge (in Schwarz, Hintergrundweiß) mit den angegebenen 'Löchern' zeigt. Die Schriftgröße der gesamten Zeichenfolge muss konstant sein (das heißt, keine unterschiedliche Skalierung für die einzelnen Buchstaben), sodass die Buchstaben in voller Größe (z. B. ABCDEFGHIJKLMNOPRSTUVWXYZ
aber j und Q sind größer) mindestens 10 Pixel hoch sein müssen. (Sie müssen es nicht in eine Datei schreiben, jede Art von Anzeige ist in Ordnung, solange sie als Pixelgrafik generiert wird, wie z. B. Leinwand in JavaScript.) Bitte posten Sie diese Grafik mit Ihrer Antwort.
Der Zugriff auf die Bibliotheken courier.ttf / font ist zulässig.
Das Programm muss auch die Anzahl der schwarzen Pixel zählen und diese in die Konsole oder in die am Ende bevorzugte Ausgabemethode schreiben.
Ergebnis
Die Punktzahl wird wie folgt bewertet: Der vollständige Programmcode muss als Eingabezeichenfolge für Ihr Programm verwendet werden. Die Anzahl der schwarzen Pixel entspricht Ihrer Punktzahl. Programmcode, der nicht druckbare oder nicht ASCII-Zeichen enthält, ist nicht zulässig. (Sowie Standardlücken.) Je niedriger die Punktzahl, desto besser.
quelle
Antworten:
Mathematica, 4864 Pixel
Hier ist das Bild:
Wenn Sie in Mathematica ein "Programm" schreiben, schreiben Sie einfach einen Ausschnitt. Dies erwartet also, dass die Eingabe in gespeichert ist,
j
und das letzte, was zurückgegeben wird, sind das Bild und die Anzahl. Dies spuckt auch eine Reihe von Fehlern aus, da ich keine Grenzen überprüfel
, aber es erzeugt trotzdem das gewünschte Ergebnis.wo
%
bezieht sich auf die letzte Ausgabe.Vielen Dank an Geobits für die Idee zum Algorithmus. Ich fülle das Bild von der oberen linken Ecke mit einer ungültigen Intensität und ersetze dann alle verbleibenden weißen Pixel durch schwarze Pixel und die ungültigen durch weiße.
Beachten Sie, dass die
FreeQ
Überprüfung nicht erforderlich ist, damit das Programm ordnungsgemäß funktioniert, sondern in angemessener Zeit beendet wird. Wenn ich es weglassen würde, würde ich tatsächlich 300 Pixel weniger erzielen.quelle