Continuo ouvindo que pensar fora da caixa é um objetivo que vale a pena atingir, mas como posso saber se estou conseguindo fazer isso com sucesso?
Para resolver esse dilema, já escrevi um tradutor de ondas cerebrais para ASCII que, em teoria, deveria produzir resultados como
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
ou
#
+------+ #
| | thinking #
| | #
| | #
+------+ #
#
o que torna bastante fácil saber se alguém está pensando fora da caixa ou não. (Eles #
não fazem parte da saída e representam novas linhas.)
No entanto, devido a um erro, às vezes apenas uma seção menor da saída é retornada:
| | #
+---------+ #
thinking #
#
+#
|#
inking |#
#
#
A tarefa
Por favor, ajude-me a classificar automaticamente a saída do tradutor Brainwave-to-ASCII , escrevendo um programa ou função que leia uma reprensentação ascii e retorne se thinking
está na caixa, fora dela ou não pode ser detectado pela entrada.
Entrada
Um conjunto de cadeias de caracteres do mesmo comprimento como uma lista ou delimitadas por novas linhas contendo
- a sequência
thinking
ou pré ou sufixos válidos - os caracteres que
+-|
formam uma caixa retangular ou partes válidas - espaços
- NÃO
#
, elas estão incluídas apenas no desafio de marcar as extremidades das linhas de entrada.
Resultado
- um valor verdadeiro se
thinking
estiver fora da caixa - um valor falso se
thinking
estiver na caixa - um terço distinto talvez valor, se não puder ser determinado a partir da entrada,
thinking
esteja na caixa ou não
Exemplos
Verdade:
#
+------+ #
| | 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")
---#
Como entrada de string:
" \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#
-#
Como entrada de string:
" \n +------------+ \n | thinking | \n | | \n +------------+ \n "
" +---------------\n | \n | \n | thinking "
" | \nking | \n------+ "
"+---\n|thi\n+---"
"-\nn\n-"
Talvez:
thinking#
g|#
think#
-----#
| |# (box large enough to possibly contain the string)
| |#
+--#
| #
# (empty input)
Como entrada de string:
"thinking"
"g|"
"|t"
"-\ni"
"h\n-"
"think\n-----"
"| |\n| |"
" +--\n | "
""
Regras
- Isso é código-golfe , então tente usar o mínimo de bytes possível.
- O valor talvez pode ser escolhido livremente, desde que seja diferente do valor verdade / falsidade e seja o mesmo para todas as entradas talvez. Também pode ser um erro.
- Você pode assumir que a entrada é sempre válida (por exemplo, não contém outros caracteres além de
+-ghiknt|
, não mais que uma caixa, ...).
+\n+
caixa muito pequena para uma palavra #