Ich höre immer wieder, dass es sich lohnt, über den Tellerrand hinaus zu denken, aber wie kann ich feststellen, ob ich es erfolgreich mache?
Um dieses Dilemma zu lösen, habe ich bereits einen Brainwave-to-ASCII- Übersetzer geschrieben, der theoretisch Ausgaben wie erzeugen sollte
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
oder
#
+------+ #
| | thinking #
| | #
| | #
+------+ #
#
was es ziemlich einfach macht zu sagen, ob man über den Tellerrand hinaus denkt oder nicht. (Sie #
sind nicht Teil der Ausgabe und stellen neue Zeilen dar.)
Aufgrund eines Fehlers wird jedoch manchmal nur ein kleinerer Teil der Ausgabe zurückgegeben:
| | #
+---------+ #
thinking #
#
+#
|#
inking |#
#
#
Die Aufgabe
Bitte helfen Sie mir, die Brainwave-zu-ASCII- Übersetzer-Ausgabe automatisch zu klassifizieren, indem Sie ein Programm oder eine Funktion schreiben, die eine ASCII- Repräsentation liest und zurückgibt, ob sie thinking
sich in der Box befindet, sich außerhalb davon befindet oder nicht von der Eingabe unterscheiden konnte.
Eingang
Eine Reihe von Zeichenfolgen gleicher Länge, die entweder als Liste oder durch Zeilenumbrüche begrenzt sind
- die Zeichenfolge
thinking
oder gültige Vor- oder Nachsetzzeichen davon - die Zeichen,
+-|
die ein rechteckiges Kästchen oder gültige Teile davon bilden - Leerzeichen
- NEIN
#
, diese sind nur in der Abfrage enthalten, um die Enden der Eingabezeilen zu markieren.
Ausgabe
- Ein wahrer Wert, wenn er
thinking
außerhalb des Rahmens liegt - ein falscher Wert, wenn
thinking
in der Box ist - ein deutlicher dritte vielleicht Wert , wenn sie nicht von dem Eingang bestimmt werden können , ob
thinking
in der Box oder nicht
Beispiele
Wahrheit:
#
+------+ #
| | thinking #
| | #
| | #
+------+ #
#
| | #
+---------+ #
thinking #
#
+#
|#
|#
inking |#
thinking #
-------+ #
++ # (thinking is not in the box, so it must be outside)
++ # (this is also the smallest possible box)
+ #
t#
+----+# (The box is not wide enough to contain "thinking")
---# (The box is not high enough to contain "thinking")
---#
Als Stringeingabe:
" \n +------+ \n | | thinking \n | | \n | | \n +------+ \n "
" | | \n +---------+ \n thinking "
" \n +\n |\n |\ninking |"
"thinking \n-------+ "
" ++ \n ++ "
"+ \n t"
"+----+"
"---\n---"
"g++"
"k\n+"
Falsch:
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
+---------------#
| #
| #
| thinking #
| #
king | #
------+ #
+---#
|thi#
+---#
-#
n#
-#
Als Stringeingabe:
" \n +------------+ \n | thinking | \n | | \n +------------+ \n "
" +---------------\n | \n | \n | thinking "
" | \nking | \n------+ "
"+---\n|thi\n+---"
"-\nn\n-"
Vielleicht:
thinking#
g|#
think#
-----#
| |# (box large enough to possibly contain the string)
| |#
+--#
| #
# (empty input)
Als Stringeingabe:
"thinking"
"g|"
"|t"
"-\ni"
"h\n-"
"think\n-----"
"| |\n| |"
" +--\n | "
""
Regeln
- Das ist Code-Golf , also versuchen Sie, so wenig Bytes wie möglich zu verwenden.
- Der Wert für " Vielleicht" kann frei gewählt werden, solange er sich vom Wert für "Wahr" / "Falsch" unterscheidet und für alle "Vielleicht" -Eingaben gleich ist. Es kann auch ein Fehler sein.
- Sie können davon ausgehen, dass die Eingabe immer gültig ist (z. B. enthält keine anderen Zeichen als
+-ghiknt|
, nicht mehr als ein Kästchen, ...).
+\n+
Box zu klein für ein Wort