Ciągle słyszę, że nieszablonowe myślenie jest celem, który warto osiągnąć, ale skąd mam wiedzieć, czy mi się to udaje?
Aby rozwiązać ten dylemat, napisałem już tłumacz Brainwave-to-ASCII -translator, który teoretycznie powinien dawać wyniki takie jak
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
lub
#
+------+ #
| | thinking #
| | #
| | #
+------+ #
#
co sprawia, że dość łatwo jest stwierdzić, czy ktoś myśli nieszablonowo, czy nie. (Nie #
są częścią wyniku i reprezentują nowe wiersze.)
Jednak z powodu błędu czasami zwracana jest tylko mniejsza część wyniku:
| | #
+---------+ #
thinking #
#
+#
|#
inking |#
#
#
Zadanie
Proszę, pomóż mi automatycznie sklasyfikować wyjście Brainwave-to-ASCII -translator, pisząc program lub funkcję, która czyta ascii-representation i zwraca, czy thinking
jest w pudełku, poza nim, czy nie może tego stwierdzić na podstawie danych wejściowych.
Wejście
Zestaw ciągów o tej samej długości albo jako listę, albo ograniczony znakami nowej linii zawierającymi
- ciąg
thinking
lub jego poprawne przedrostki lub sufiksy - znaki
+-|
tworzące prostokątne pudełko lub jego prawidłowe części - spacje
- NIE
#
, są one uwzględnione tylko w wyzwaniu oznaczenia końców linii wejściowych.
Wynik
- truthy wartość, jeśli
thinking
jest poza pole - falsy wartość, jeśli
thinking
jest w polu - wyraźna trzecia wartość może być, jeśli nie można ustalić z danych wejściowych, czy
thinking
jest w polu, czy nie
Przykłady
Prawda:
#
+------+ #
| | 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")
---#
Jako ciąg wejściowy:
" \n +------+ \n | | thinking \n | | \n | | \n +------+ \n "
" | | \n +---------+ \n thinking "
" \n +\n |\n |\ninking |"
"thinking \n-------+ "
" ++ \n ++ "
"+ \n t"
"+----+"
"---\n---"
"g++"
"k\n+"
Falsy:
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
+---------------#
| #
| #
| thinking #
| #
king | #
------+ #
+---#
|thi#
+---#
-#
n#
-#
Jako ciąg wejściowy:
" \n +------------+ \n | thinking | \n | | \n +------------+ \n "
" +---------------\n | \n | \n | thinking "
" | \nking | \n------+ "
"+---\n|thi\n+---"
"-\nn\n-"
Może:
thinking#
g|#
think#
-----#
| |# (box large enough to possibly contain the string)
| |#
+--#
| #
# (empty input)
Jako ciąg wejściowy:
"thinking"
"g|"
"|t"
"-\ni"
"h\n-"
"think\n-----"
"| |\n| |"
" +--\n | "
""
Zasady
- To jest golf golfowy , więc spróbuj użyć jak najmniej bajtów.
- Może wartość może być wybrana dowolnie, o ile różnią się od truthy / wartość falsy i jest taka sama dla wszystkich być może na dane wejściowe. Może to być także błąd.
- Możesz założyć, że dane wejściowe są zawsze poprawne (np. Nie zawiera innych znaków, niż
+-ghiknt|
nie więcej niż jedno pole, ...).
+\n+
pudełko za małe na słowo