Dies ist eine zusätzliche Herausforderung für die Herausforderung " Loopy-Rätsel generieren" . Möglicherweise möchten Sie diese Herausforderung lösen, bevor Sie die schwierigere Herausforderung im vorherigen Link versuchen.
Das Ziel dieser Herausforderung ist es, die Lösung für ein Loop-Puzzle zu validieren. Bitte nehmen Sie die gesamte Dokumentation darüber, was ein Loop-Puzzle ist, aus dem vorherigen Link. Ein gelöstes Loopy-Puzzle wird ähnlich wie die Ausgabe einer gültigen Übermittlung an die Herausforderung "Loopy-Puzzles generieren" formatiert und sieht möglicherweise folgendermaßen aus:
+-+-+ +-+ +-+ +
| | | |2|3|
+-+ + + + + +-+
2| | | |2| 3|
+ + +-+ + + +-+
2| 2 1|3| |
+-+ +-+ +-+ +-+
|2 | | 1 2|
+ +-+ +-+ +-+ +
| |2 1 2|3|3| |
+ + +-+ +-+ +-+
| | |3|2 1
+ +-+ +-+-+-+-+
| 2 2 |
+-+-+-+-+-+-+-+
Der Pfad, aus dem die Lösung besteht, ist mit markiert |
und -
Zeichen zwischen den +
Zeichen .
Eingabespezifikation
Ihr Programm erhält ein Loop-Puzzle mit einer Lösung, die wie im obigen Beispiel formatiert ist, als Eingabe. Ihr Programm soll die Größe des Puzzles aus der Eingabe ableiten. Sie können die folgenden Annahmen über die Eingabe treffen:
- Das Puzzle hat nicht weniger als 2 und nicht mehr als 99 Zellen in beide Richtungen
- Somit hat jede Zeile eine maximale Länge von 199 Zeichen ohne die Zeilenumbruchzeichen.
- Somit enthält der Eingang maximal 99 Zeilen
- Jede Zeile kann nach dem letzten druckbaren Zeichen enden oder mit Leerzeichen aufgefüllt werden, sodass sie eine Länge von bis zu 2 · y + 1 Zeichen hat, wobei y die Anzahl der Zellen in horizontaler Richtung ist
- Jede Position mit x- und y- Koordinaten enthält sogar a
+
Zeichen - Positionen horizontal oder vertikal neben Positionen, die
+
Zeichen enthalten , enthalten entweder ein Leerzeichen, befinden sich hinter dem Zeilenende oder enthalten ein-
Zeichen, wenn sie horizontal benachbart sind, oder a|
Zeichen, wenn sie vertikal benachbart sind - Alle anderen Positionen entweder hinter dem Ende der Zeile oder eines der Zeichen enthalten
,
0
,1
,2
, oder3
- Alle Zeilen werden mit den Standard-Zeilenumbruchzeichen Ihrer Plattform abgeschlossen.
- Es gibt genau eine nachfolgende Newline
Die Eingabe muss auf eine der folgenden Arten empfangen werden:
- Von der Standardeingabe
- Als Wert eines Parameters namens
p
in einer HTTP-POST-Anforderung benannt ist - Als Inhalt eines HTML-Formulars
- Als Inhalt einer Datei mit dem Namen
p
in einem implementierungsdefinierten Verzeichnis benannt ist - In einer Implementierung zur Laufzeit definiert, wenn die vorherigen vier nicht verfügbar sind
- Fest codiert, wenn Ihre Sprache keine Möglichkeit bietet, Eingaben zu empfangen
Ausgabespezifikation
Ihr Programm endet für alle Eingaben, die der Eingabespezifikation entsprechen, und berechnet, ob die Lösung für das Rätsel korrekt ist. Ihr Programm gibt das Ergebnis der Berechnung auf eine der folgenden Arten als booleschen Wert aus:
- Als Exit-Status entweder Null (Lösung ist gültig) oder ungleich Null (Lösung ist ungültig)
- Als Zeichen
y
(Lösung ist gültig) odern
(Lösung ist ungültig) gefolgt von null oder mehr beliebigen Zeichen, die in einer implementierungsdefinierten Weise ausgegeben werden
Das Verhalten Ihres Programms ist nicht angegeben, wenn Eingaben auftreten, die nicht gemäß der Eingabespezifikation formatiert sind.
Wertung
Die Punktzahl Ihres Programms ist die Anzahl der Zeichen in seiner Quelle, mit Ausnahme von auslassbaren Leerzeichen und auslassbaren Kommentaren. Sie werden aufgefordert, Ihre Einreichung einzurücken, damit sie für die anderen leichter zu lesen ist, und Ihre Lösung zu kommentieren, damit sie leichter zu befolgen ist.
Einsendungen, die der Eingabe- oder Ausgabespezifikation nicht entsprechen oder falsche Ergebnisse generieren, sind ungültig.
0
auch eine gültige Nummer für eine Zelle angegeben ist.Antworten:
GolfScript, 133 Zeichen
Erwartet die Eingabe von STDIN und druckt
y
für eine gültige undn
für eine ungültige Lösung . Führt die Aufgabe aus, indem hauptsächlich Zeichenfolgen im Raster oder mit gedrehten Versionen des Rasters ersetzt werden.Kommentierter Code:
quelle
C #
803579 BytesEin vollständiges Programm, das aus STDIN gelesen wird, sollte mit jedem gängigen neuen Zeilenschema fertig werden, solange es Zeilenvorschübe enthält. Vielen Dank an HackerCow für den Hinweis, dass ich keine neue Zeile an eine andere Frage anhängen muss, und ich wurde aufgefordert, sie hier zu entfernen und 4 Byte zu sparen
Golfcode:
Der Code führt 3 Überprüfungen durch, wobei zuerst die Anzahl der Zeilen um jede Nummer überprüft wird und dass von jeder Kreuzung 0 oder 2 Zeilen ausgehen, und dann, dass alle Zeilen miteinander verbunden sind.
Formatierter Code:
quelle
Cobra - 514
Überprüft, ob jede Zahl die richtige Anzahl von Zeilen neben sich hat, geht dann einen Pfad um die Zeilen herum und prüft, ob sie eine verpasst hat.
quelle