Als ich neulich auf quadratischem Papier herumgekritzelt habe, habe ich die oben genannte Negativschrift für Ziffern gefunden. Falls Sie es noch nicht entdeckt haben, ergeben die Zwischenräume zwischen den obigen Formen den goldenen Schnitt 1.618033988749 . In dieser Herausforderung besteht Ihre Aufgabe darin, eine Zahl als Eingabe zu verwenden und genau so zu rendern, wie im obigen Beispiel gezeigt.
So entstehen diese. Alle Zeilen befinden sich in einem regelmäßigen Raster, sodass die einzelnen Ziffern aus einer kleinen Anzahl von Rasterzellen bestehen. Hier sind die Formen der 10 Ziffern (der Dezimalpunkt wird bei dieser Herausforderung ignoriert):
Ja, die 7 unterscheidet sich vom Beispiel mit dem goldenen Schnitt oben. Ich habe das irgendwie durcheinander gebracht. Wir werden mit diesem gehen.
Beachten Sie, dass jede Ziffer fünf Zellen hoch und drei Zellen breit ist. Um eine Zahl zu rendern, können Sie sich vorstellen, alle ihre Ziffern nebeneinander zu platzieren, sodass genau eine leere Spalte zwischen jedem Ziffernpaar vorhanden ist. Zum Beispiel nimmt 319
als Eingabe, würden wir schreiben:
Beachten Sie, dass wir eine führende und eine nachfolgende leere Spalte hinzufügen. Nun kehren wir die Zellen um:
Die Ausgabe sollte dann die Grenzen der resultierenden Polygone sein:
Natürlich können Sie das Ergebnis auch auf andere Weise generieren, solange die gerenderte Ausgabe gleich aussieht.
Eingang
- Sie können ein Programm oder eine Funktion schreiben, indem Sie eine Eingabe über STDIN (oder die nächstgelegene Alternative), ein Befehlszeilenargument oder ein Funktionsargument als Zeichenfolge oder eine Ziffernliste vornehmen. (Sie können keine Zahl verwenden, da Sie damit keine führenden Nullen unterstützen können.)
- Sie können davon ausgehen, dass die Eingabe keine weiteren 16 Stellen enthält.
Ausgabe
- Die Ausgabe kann entweder auf dem Bildschirm angezeigt oder in einem gemeinsamen Bildformat in eine Datei geschrieben werden.
- Sie können sowohl Raster- als auch Vektorgrafiken verwenden.
- In beiden Fällen muss das Seitenverhältnis der Zellen des zugrunde liegenden Rasters 1 sein (dh die Zellen sollten Quadrate sein).
- Bei Raster-Grafiken sollte jede Zelle mindestens 20 x 20 Pixel umfassen.
- Die Linien dürfen nicht breiter als 10% der Zellengröße sein. Ich bin bereit, aufgrund von Aliasing hier ein oder zwei Pixel Spielraum einzuräumen.
- Linien und Hintergrund können zwei klar unterscheidbare Farben sein, aber die Formen, die durch die Linien erzeugt werden, dürfen nicht ausgefüllt werden (dh die Innenseiten sollten auch die Hintergrundfarbe sein).
- In jedem geschlossenen Regelkreis dürfen keine Lücken vorhanden sein.
- Natürlich muss das gesamte Ergebnis sichtbar sein.
Testfälle
Hier sind 10 Eingänge, die zusammen alle möglichen Paare benachbarter Ziffern sowie jede mögliche führende und nachfolgende Ziffer abdecken:
07299361548
19887620534
21456837709
39284106657
49085527316
59178604432
69471338025
79581224630
89674235011
97518264003
Und hier sind die erwarteten Ergebnisse für diejenigen:
Stellen Sie sicher, dass Ihr Code auch bei einer einzelnen Ziffer funktioniert (ich möchte die erwarteten Ergebnisse hier nicht einschließen, da sie offensichtlich sein sollten und der Testfallabschnitt so aufgebläht ist, wie er ist).