Je continue à entendre que sortir des sentiers battus est un objectif à atteindre, mais comment puis-je savoir si je le fais avec succès?
Pour résoudre ce dilemme, j’ai déjà écrit un traducteur Brainwave-to-ASCII qui, en théorie, devrait produire des résultats tels que
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
ou
#
+------+ #
| | thinking #
| | #
| | #
+------+ #
#
ce qui le rend assez facile à dire si on pense en dehors de la boîte ou pas. (Ils #
ne font pas partie de la sortie et représentent de nouvelles lignes.)
Cependant, parfois à cause d’un bogue, seule une petite partie de la sortie est renvoyée:
| | #
+---------+ #
thinking #
#
+#
|#
inking |#
#
#
La tâche
S'il vous plaît, aidez-moi à classer automatiquement la sortie du traducteur Brainwave-to-ASCII en écrivant un programme ou une fonction qui lit une représentation ascii et retourne si elle se thinking
trouve dans la boîte, en dehors de celle-ci ou si elle ne pouvait pas la révéler à partir de l'entrée.
Contribution
Un ensemble de chaînes de même longueur, sous forme de liste ou délimité par des nouvelles lignes contenant
- la chaîne
thinking
ou ses pré- ou suffixes valides - les caractères
+-|
formant une boîte rectangulaire ou des parties valides de celle-ci - les espaces
- NON
#
, ceux-ci ne sont inclus que dans le défi de marquer les extrémités des lignes d'entrée.
Sortie
- une valeur de vérité si
thinking
est en dehors de la boîte - une valeur de fausseté si
thinking
est dans la boîte - une troisième valeur distincte peut-être si elle ne peut pas être déterminée à partir de l'entrée si elle
thinking
est dans la boîte ou non
Exemples
Vérité
#
+------+ #
| | 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")
---#
En entrée de chaîne:
" \n +------+ \n | | thinking \n | | \n | | \n +------+ \n "
" | | \n +---------+ \n thinking "
" \n +\n |\n |\ninking |"
"thinking \n-------+ "
" ++ \n ++ "
"+ \n t"
"+----+"
"---\n---"
"g++"
"k\n+"
Fausseté:
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
+---------------#
| #
| #
| thinking #
| #
king | #
------+ #
+---#
|thi#
+---#
-#
n#
-#
En entrée de chaîne:
" \n +------------+ \n | thinking | \n | | \n +------------+ \n "
" +---------------\n | \n | \n | thinking "
" | \nking | \n------+ "
"+---\n|thi\n+---"
"-\nn\n-"
Peut être:
thinking#
g|#
think#
-----#
| |# (box large enough to possibly contain the string)
| |#
+--#
| #
# (empty input)
En entrée de chaîne:
"thinking"
"g|"
"|t"
"-\ni"
"h\n-"
"think\n-----"
"| |\n| |"
" +--\n | "
""
Règles
- C'est du code-golf , alors essayez d'utiliser le moins d'octets possible.
- La peut - être la valeur peut être choisie librement tant qu'il est différent de la truthy / valeur falsy et est la même pour tous les intrants peut - être. Cela peut aussi être une erreur.
- Vous pouvez supposer que la saisie est toujours valide (par exemple, ne contient aucun autre caractère que
+-ghiknt|
, pas plus d'une case, ...).
+\n+
boîte trop petite pour un mot