Schreiben Sie ein Programm, um eine Datei mit einem Kreuzworträtsel zu erstellen, das der Benutzer ausdrucken und das Puzzle bearbeiten kann.
Eingang
Ein Dateiname, der eine Kreuzworträtsel-Rasterdatei darstellt, und optional ein zweiter Dateiname, der eine Kreuzworträtsel-Nummerierungsdatei darstellt. Die Eingabe sollte auf herkömmliche Weise für Ihre Programmierumgebung akzeptiert werden: Befehlszeilenargumente, Standardeingabe, Webformulare usw.
Sie können davon ausgehen, dass das Kreuzworträtsel validiert wurde und wenn Sie eine Nummerierungsdatei verwenden, die dem bereitgestellten Raster entspricht .
Rasterdateiformat: Die erste Zeile besteht aus zwei durch Leerzeichen getrennten Ganzzahlkonstanten M und N. Nach dieser Zeile befinden sich M Zeilen, die jeweils aus N Zeichen (plus einer neuen Zeile) bestehen [#A-Z ]
. Diese Zeichen werden so interpretiert, dass sie '#'
ein blockiertes Quadrat, ' '
ein offenes Quadrat im Puzzle ohne bekannten Inhalt und einen Buchstaben ein offenes Quadrat anzeigen, das diesen Buchstaben enthält.
Nummerierung des Dateiformats Zeilen, die mit '#' beginnen, werden ignoriert und können für Kommentare verwendet werden. Alle anderen Zeilen enthalten eine Lasche getrennt Triplett i
, m
, n
wobei i
eine Reihe auf dem Raster gedruckt werden soll , darstellt, und m
und n
die Zeile und Spalte des Quadrates darstellen , wo sie gedruckt werden sollen. Die Anzahl der Zeilen und Spalten beginnt bei 1.
Ausgabe
Die Ausgabe ist eine Datei, die der Benutzer ausdrucken und mit einem Kreuzworträtsel bearbeiten kann. ASCII, Postscript, PDF, PNG und jedes andere vernünftige Format werden akzeptiert, aber alle müssen diese Regeln einhalten:
- Es muss eine Regel für das gesamte Puzzle und zwischen jedem Quadratpaar geben.
- Blockierte Quadrate müssen dunkel ausgefüllt werden.
- In Spielfeldern, die den Beginn eines nummerierten (quer oder abwärts gerichteten) Hinweises darstellen, muss in der oberen linken Ecke des Quadrats eine Zahl angegeben werden, während der größte Teil des Quadrats leer bleibt, damit das Spiel darin schreiben kann. Beachten Sie das typische Raster In den Zeitungen veröffentlichte werden viele Dutzend Hinweise haben und können mehr als 100 haben.
Die Ausgabe erfolgt ausschließlich über das Raster ohne die Liste der Hinweise.
Die Ausgabe sollte an ein herkömmliches Ziel gesendet werden (eine Datei, deren Name vom Eingabedateinamen abgeleitet ist, die als Webseite erstellt wurde usw.)
Testfall
Bei einer Eingabe von
5 5
# ##
#
#
#
## #
Die Startecke einer akzeptablen ASCII-Ausgabe könnte folgendermaßen aussehen
+-----+-----+-----+---
|#####|1 |2 |###
|#####| | |###
|#####| | |###
+-----+-----+-----+---
|#####|3 | |4
|#####| | |
|#####| | |
+-----+-----+-----+---
|6 | |#####|
| | |#####|
Wer grafische Formate verwendet, sollte sich von den üblichen gedruckten Quellen inspirieren lassen.
Nummerierungsschema
Ein korrekt nummeriertes Raster hat die folgenden Eigenschaften:
- Die Nummerierung beginnt bei 1.
- Keine Spalte oder Spanne offener Quadrate ist nicht nummeriert.
- Zahlen werden in Zählreihenfolge gefunden, indem von der oberen bis zur unteren Reihe gescannt wird, wobei jede Reihe von links nach rechts genommen wird.
Beiseite
Dies ist die dritte von mehreren Kreuzworträtselherausforderungen. Ich plane, durchgehend eine konsistente Reihe von Dateiformaten zu verwenden und dabei eine seriöse Suite von Kreuzworträtsel-bezogenen Dienstprogrammen aufzubauen.
Frühere Herausforderungen in dieser Reihe: