Chris, ein kryptischer Kreuzworträtsel-Süchtiger, hat einen festgelegten Algorithmus für die Reihenfolge, in der er sie löst.
Wir werden das obige Bild als Leitfaden verwenden.
- Chris beginnt immer mit der ersten Ahnung, in diesem Fall 1 Across. Chris ist ein fähiger Kreuzworträtsel-Enthusiast, daher wird davon ausgegangen, dass er immer die Antwort auf den Hinweis weiß, an dem er arbeitet.
- Sobald Chris einen Hinweis vervollständigt, sucht er nach allen Hinweisen, die zu den von ihm vervollständigten Hinweisen gehören (im ersten Fall 1 Runter, 2 Runter und 3 Runter), und vervollständigt dann den Hinweis mit der niedrigsten Nummer. Wenn es keine Anhaltspunkte dafür gibt, fährt er mit Schritt 3 fort.
- Wenn der Hinweis so ist, dass die nächste Zahl (wie in Schritt 3 beschrieben) sowohl einen Querhinweis als auch einen Abwärtshinweis hat, wird er den Querhinweis zuerst vervollständigen (100% ige Gewissheit, dies grenzt an OCD!)
- Wenn es keine Anhaltspunkte gibt, geht er zum nächsten verfügbaren Anhaltspunkt mit der nächsten Nummer (quer oder runter).
- Wiederholen Sie den Vorgang ab Schritt 2, bis alle Hinweise vollständig sind.
Und hier kommt es auf Sie an, liebe Programmierer. Sie wurden beauftragt, Code zu erstellen, der bei Verwendung einer Kreuzworträtselvorlage eine Ausgabe liefert, in der die Reihenfolge der Hinweise auf der Grundlage von Chris 'Algorithmus zur Lösung beschrieben wird.
Der Code akzeptiert die Eingabe einer Kreuzworträtselvorlage in Form .
eines weißen und #
eines schwarzen Quadrats.
Beispiel :
.....#.........
.#.#.#.#.#.#.#.
...#...#.......
.#.#.#.#.#.#.#.
....#..........
##.#.#.#.#.#.#.
......#........
.###.#####.###.
........#......
.#.#.#.#.#.#.##
..........#....
.#.#.#.#.#.#.#.
.......#...#...
.#.#.#.#.#.#.#.
.........#.....
Die Eingabe kann erfolgen durch: a) eine Datei, die die Darstellung des Kreuzworträtsels liest, oder b) durch Zeileneingabe jeder Zeile des Kreuzworträtsels, gefolgt von \n
einer zweiten \n
, die EOF anzeigt.
Und dann bestimmt es die Methode, mit der Chris es nach dem oben beschriebenen Algorithmus lösen würde.
Die Ausgabe muss im Format einer Reihe von durch Kommas getrennten Anweisungen erfolgen, in Form von n(A|D)
, wobei n
die Hinweisnummer gefolgt von A
für across oder D
für down ist.
Im obigen Beispiel (sowohl aus dem Bild als auch aus der Beispielvorlage, die identisch sind) wäre die Ausgabe:
1A,1D,2D,3D,9A,10A,4D,5D,6D,7D,8D,11A,12A,13A,15A,14D,15D,16A,17A,18D,19D,20A,21D,23A,22D,24A,25D,27A,28A,26D,29A,30A,31A
Kürzester Code gewinnt ...
Testen
Sie müssen bei Ihrer Übermittlung den Code, eine Bytezahl sowie einen der vier im Format .
und dargestellten Testfälle und #
die von dieser Eingabe generierte Ausgabe angeben. Es gibt vier Testfälle, die drei unten sowie die obige Beispielvorlage.
Beispiel Testfälle:
Testfall 1
.....#
.#.#.#
...#..
.#.#.#
.....#
##.#..
Ausgabe: 1A,1D,2D,3D,4A,5A,6A,7A
Testfall 2
.....#..
.#.##..#
.#....#.
...##.#.
.####...
......##
Ausgabe: 1A,1D,2D,5A,4D,4A,3D,3A,7A,8A,6D,9A
Testfall 3
.........#
#.#.#.#.#.
....#...#.
#...#.#.#.
..###.#.#.
.#....#...
.#####...#
.....###..
Ausgabe: 1A,2D,3D,4D,5D,7A,8A,9A,10A,11A,11D,12A,13A,6D,14D,15A,16A,17A
Testfall 4
.....#.........
.#.#.#.#.#.#.#.
...#...#.......
.#.#.#.#.#.#.#.
....#..........
##.#.#.#.#.#.#.
......#........
.###.#####.###.
........#......
.#.#.#.#.#.#.##
..........#....
.#.#.#.#.#.#.#.
.......#...#...
.#.#.#.#.#.#.#.
.........#.....
Ausgabe: 1A,1D,2D,3D,9A,10A,4D,4A,5D,6D,7D,8D,11A,12A,13A,15A,14D,15D,16A,17A,18D,19D,20A,21D,23A,22D,24A,25D,27A,28A,26D,29A,30A,31A
Viel Glück!
17A
am Ende aus. Auch der vierte 4A
gleich danach 4D
.