Betrachten Sie das folgende Standard-15 × 15- Kreuzworträtselraster .
Wir können dies in der ASCII-Kunst darstellen, indem wir #
für Blöcke und (Leerzeichen) für weiße Quadrate verwenden.
# #
# #
#
# #
### ## ##
## #
# #
# ##
## ## ###
# #
#
# #
# #
Bestimmen Sie anhand eines Kreuzworträtsels im obigen ASCII-Grafikformat, wie viele Wörter es enthält. (Das obige Raster enthält 78 Wörter. Es ist zufällig das New York Times- Puzzle vom letzten Montag .)
Ein Wort ist eine Gruppe von zwei oder mehr aufeinanderfolgenden Leerzeichen, die vertikal oder horizontal verlaufen. Ein Wort beginnt und endet entweder mit einem Block oder der Kante des Gitters und verläuft immer von oben nach unten oder von links nach rechts, niemals diagonal oder rückwärts. Beachten Sie, dass Wörter die gesamte Breite des Puzzles umfassen können, wie in der sechsten Zeile des Puzzles oben. Ein Wort muss nicht mit einem anderen Wort verbunden sein.
Einzelheiten
- Die Eingabe ist immer ein Rechteck mit den Zeichen
#
oder(Leerzeichen), wobei die Zeilen durch eine neue Zeile (
\n
) getrennt sind. Sie können davon ausgehen, dass das Raster aus 2 verschiedenen druckbaren ASCII- Zeichen anstelle von#
und besteht.
- Sie können davon ausgehen, dass es eine optionale nachfolgende Newline gibt. Nachgestellte Leerzeichen zählen, da sie die Anzahl der Wörter beeinflussen.
- Das Gitter ist nicht immer symmetrisch und es können alle Leerzeichen oder alle Blöcke sein.
- Ihr Programm sollte theoretisch in der Lage sein, an einem Raster beliebiger Größe zu arbeiten, aber für diese Herausforderung wird es niemals größer als 21 × 21 sein.
- Sie können das Raster selbst als Eingabe oder den Namen einer Datei verwenden, die das Raster enthält.
- Nehmen Sie Eingaben von stdin oder Befehlszeilenargumenten und geben Sie sie an stdout aus.
- Wenn Sie möchten, können Sie anstelle eines Programms eine benannte Funktion verwenden, das Raster als Zeichenfolgenargument verwenden und eine Ganzzahl oder Zeichenfolge über stdout oder Funktionsrückgabe ausgeben.
Testfälle
Eingang:
# # #
Ausgabe:
7
(Vor jedem stehen vier Leerzeichen#
. Das Ergebnis wäre dasselbe, wenn jedes Zahlenzeichen entfernt würde, aber Markdown entfernt Leerzeichen von ansonsten leeren Zeilen.)Eingang:
## # ##
Ausgabe:
0
(Ein-Buchstaben-Wörter zählen nicht.)Eingang:
###### # # #### # ## # # ## # #### #
Ausgabe:
4
Eingabe: (Sonntag, 10. Mai, Rätsel der NY Times )
# ## # # # # # # # ### ## # # ## # # # ## # ## # ## # # ### ## # ## ## # ## ### # # ## # ## # ## # # # ## # # ## ### # # # # # # # ## #
Ausgabe:
140
Wertung
Der kürzeste Code in Bytes gewinnt. Tiebreaker ist der älteste Beitrag.