Я постійно чую, що мислення поза рамками - мета, яку варто досягти, але як я можу сказати, чи успішно це роблю?
Для вирішення цієї дилеми я вже написав перекладач Brainwave-ASCII, який теоретично повинен давати результати
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
або
#
+------+ #
| | thinking #
| | #
| | #
+------+ #
#
які дозволяють досить легко сказати, думає хтось поза коробкою чи ні. (Вони #
не є частиною результату і являють собою нові рядки.)
Однак через помилку іноді повертається лише менша частина виводу:
| | #
+---------+ #
thinking #
#
+#
|#
inking |#
#
#
Задача
Будь ласка, допоможіть мені автоматично класифікувати вихідний перекладач Brainwave-to-ASCII , написавши програму або функцію, яка зчитує репрезентацію ascii та повертає, чи thinking
знаходиться в полі, поза ним, чи він не міг сказати з вводу.
Вхідні дані
Набір рядків однакової довжини або як список, або розмежоване новими рядками, що містять
- рядок
thinking
або їх дійсні префікси або суфікси - символи, що
+-|
утворюють прямокутну коробку або дійсні її частини - пробіли
- НІ
#
, вони включені лише в завдання, щоб позначити кінці рядків введення.
Вихід
- truthy значення , якщо
thinking
знаходиться поза коробки - falsy значення , якщо
thinking
в коробці - виразний третій, можливо, значення, якщо його не можна визначити з вхідних даних, чи
thinking
є в полі чи ні
Приклади
Truthy:
#
+------+ #
| | 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")
---#
Як рядок введення:
" \n +------+ \n | | thinking \n | | \n | | \n +------+ \n "
" | | \n +---------+ \n thinking "
" \n +\n |\n |\ninking |"
"thinking \n-------+ "
" ++ \n ++ "
"+ \n t"
"+----+"
"---\n---"
"g++"
"k\n+"
Фальсі:
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
+---------------#
| #
| #
| thinking #
| #
king | #
------+ #
+---#
|thi#
+---#
-#
n#
-#
Як рядок введення:
" \n +------------+ \n | thinking | \n | | \n +------------+ \n "
" +---------------\n | \n | \n | thinking "
" | \nking | \n------+ "
"+---\n|thi\n+---"
"-\nn\n-"
Може бути:
thinking#
g|#
think#
-----#
| |# (box large enough to possibly contain the string)
| |#
+--#
| #
# (empty input)
Як рядок введення:
"thinking"
"g|"
"|t"
"-\ni"
"h\n-"
"think\n-----"
"| |\n| |"
" +--\n | "
""
Правила
- Це код-гольф , тому постарайтеся використовувати якомога менше байтів.
- Значення, можливо, може бути вибране вільно, якщо воно відрізняється від значення truthy / falesy і є однаковим для всіх можливостей. Це також може бути помилка.
- Ви можете припустити, що вхід завжди дійсний (наприклад, не містить інших символів
+-ghiknt|
, не більше одного поля, ...).
+\n+
скринька занадто мала для слова