我一直在听,跳出框框思考是一个值得实现的目标,但是如何判断我是否成功完成了目标呢?
为了解决这个难题,我已经写了一个Brainwave-to-ASCII转换器,理论上应该产生类似
#
+------------+ #
| thinking | #
| | #
+------------+ #
#
要么
#
+------+ #
| | thinking #
| | #
| | #
+------+ #
#
这样就很容易判断一个人是否在跳槽。(#
不在输出中,代表新行。)
但是,由于错误,有时仅返回输出的较小部分:
| | #
+---------+ #
thinking #
#
+#
|#
inking |#
#
#
任务
请帮助我编写一个程序或函数来自动对Brainwave-to-ASCII -translator输出进行分类,该程序或函数读取ascii表示并返回是否thinking
在框中,在框外还是无法从输入中分辨出来。
输入项
一组相同长度的字符串,以列表形式或由包含以下内容的换行符分隔
- 字符串
thinking
或有效的前缀或后缀 +-|
构成矩形框或其有效部分的字符- 空格
- 不
#
,这些仅包括在挑战中以标记输入线的末端。
输出量
- 一个truthy值,如果
thinking
是外箱 - 一个falsy值,如果
thinking
是在框中 - 如果无法根据输入确定是否在框中,则为第三个可能的值
thinking
例子
真相:
#
+------+ #
| | 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 / falsy值不同,并且是对所有可能-输入相同的选择。这也可能是错误。
- 您可以假定输入始终是有效的(例如,除了
+-ghiknt|
,不超过一个框,不包含其他字符,...)。
+\n+
,框太小了一个字