Erstellen Sie ein Programm, um ein Kreuzworträtsel richtig zu nummerieren.
Eingang
Die Eingabe ist der Name einer Datei, die das Kreuzworträtsel darstellt. Der Eingabedateiname kann als Argument, für die Standardeingabe oder auf andere herkömmliche Weise als durch Hardcodierung übergeben werden.
Rasterdateiformat: Eine Textdatei. Die erste Zeile besteht aus zwei durch Leerzeichen getrennten Ganzzahlkonstanten M
und N
. Nach dieser Zeile folgen 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.
Ausgabe
Die Ausgabe ist eine Nummerierungsdatei und kann an die Standardausgabe, an eine Datei, deren Name vom Eingabedateinamen abgeleitet ist, an eine benutzerdefinierte Datei oder an ein anderes herkömmliches Ziel gesendet werden.
Nummerierungsdateiformat Eine Textdatei. 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.
Nummerierungsschema
Ein korrekt nummeriertes Raster hat die folgenden Eigenschaften:
- Die Nummerierung beginnt bei 1.
- Keine Spalte oder Spanne offener Quadrate ist nicht nummeriert. (Sie können davon ausgehen, dass das Problem keine Einzelzeichenantwort enthält.)
- 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. (Jede horizontale Spanne ist also am äußersten linken Quadrat nummeriert, und jede Spalte ist am obersten Quadrat nummeriert.)
Testeingabe und erwartete Ausgabe
Eingang:
5 5
# ##
#
#
#
## #
Ausgabe (Vernachlässigung von Kommentarzeilen):
1 1 2
2 1 3
3 2 2
4 2 4
5 2 5
6 3 1
7 3 4
8 4 1
9 4 3
10 5 3
Beiseite
Dies ist die erste von hoffentlich mehreren Herausforderungen im Zusammenhang mit Kreuzworträtseln. Ich plane, durchgehend eine konsistente Reihe von Dateiformaten zu verwenden und dabei eine seriöse Suite von Kreuzworträtsel-bezogenen Dienstprogrammen aufzubauen. Zum Beispiel erfordert ein nachfolgendes Puzzle das Drucken einer ASCII-Version des Kreuzworträtsels basierend auf der Eingabe und Ausgabe dieses Puzzles.
'\n'
auf allen Plattformen wie in c dargestellt. Es wird davon ausgegangen, dass die Eingabedatei auf demselben System erstellt wurde, auf dem sie verarbeitet wird. Daher sollte dieses Problem transparent sein. Ein allgemeiner Hinweis zum Code-Golf: Wenn Sie in einer fremden Sprache oder auf einer fremden Plattform arbeiten, notieren Sie sich einfach alles, was den Leser überraschen könnte. Die Leute werden dies bei der Beurteilung Ihrer Einreichung berücksichtigen.