Continuo a sentire che pensare fuori dagli schemi è un obiettivo che vale la pena raggiungere, ma come posso sapere se lo sto facendo con successo?
Per risolvere questo dilemma ho già scritto un traduttore da Brainwave-to-ASCII che in teoria dovrebbe produrre output come
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
o
#
+------+ #
| | thinking #
| | #
| | #
+------+ #
#
il che rende abbastanza facile dire se si sta pensando fuori dagli schemi o no. (Non #
fanno parte dell'output e rappresentano nuove righe.)
Tuttavia, a causa di un bug a volte viene restituita solo una sezione più piccola dell'output:
| | #
+---------+ #
thinking #
#
+#
|#
inking |#
#
#
L'obiettivo
Aiutatemi a classificare automaticamente l' output del traduttore da Brainwave-a-ASCII scrivendo un programma o una funzione che legge una ripensazione ascii e restituisce se si thinking
trova nella casella, al di fuori di essa o non è in grado di distinguere dall'input.
Ingresso
Un set di stringhe della stessa lunghezza o come elenco o delimitato da newline contenenti
- la stringa
thinking
o pre o suffissi validi - i personaggi che
+-|
formano una scatola rettangolare o parti valide di essa - spazi
- No
#
, quelli sono inclusi solo nella sfida per contrassegnare le estremità delle righe di input.
Produzione
- un valore veritiero se
thinking
è fuori dagli schemi - un valore errato se
thinking
è nella casella - un distinto terzo forse valore se non può essere determinato dall'input se
thinking
è nella scatola o no
Esempi
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")
---#
Come input di stringa:
" \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#
-#
Come input di stringa:
" \n +------------+ \n | thinking | \n | | \n +------------+ \n "
" +---------------\n | \n | \n | thinking "
" | \nking | \n------+ "
"+---\n|thi\n+---"
"-\nn\n-"
Può essere:
thinking#
g|#
think#
-----#
| |# (box large enough to possibly contain the string)
| |#
+--#
| #
# (empty input)
Come input di stringa:
"thinking"
"g|"
"|t"
"-\ni"
"h\n-"
"think\n-----"
"| |\n| |"
" +--\n | "
""
Regole
- Questo è code-golf , quindi prova a usare il minor numero di byte possibile.
- Il valore forse può essere scelto liberamente fintanto che è diverso dal valore verità / falsa ed è lo stesso per tutti gli ingressi forse. Può anche essere un errore.
- Si può presumere che l'input sia sempre valido (es. Non contiene altri caratteri di
+-ghiknt|
, non più di una casella, ...).
+\n+
scatola troppo piccola per una parola