Prelude是一种深奥的编程语言,对构成有效程序的内容几乎没有限制,但有不同寻常的限制。只要满足以下条件,任何可打印的ASCII文本块(“块”表示可打印的ASCII行用换行符-0x0A分隔)都是有效的:
- 文本的每个(垂直)列最多包含
(
和之一)
。 - 忽略它们的垂直位置,the
(
和and)
是平衡的,也就是说,每个(
和恰好)
在其右侧配对,反之亦然。
编写一个程序或函数,给定包含可打印ASCII和换行符的字符串,确定该程序或函数是否构成有效的Prelude程序。您可以通过STDIN(或最接近的替代品),命令行参数或函数参数进行输入。可以使用您选择的任何两个固定的 真假值将结果返回或打印到STDOUT 。
您不得假定输入为矩形。
这是代码高尔夫球,因此最短的提交(以字节为单位)获胜。
例子
以下是有效的 Prelude程序(实际上,它们甚至是真正的 Prelude程序):
?1-(v #1)-
1 0v ^(# 0)(1+0)#)!
(#) ^#1-(0 #
1(# 1) v # - 1+)
vv (##^v^+
? v-(0 # ^ #)
?
1+ 1-!
这是一些输入,所有输入都是无效的:
#(#(##)##)##(
)##(##(##)#)#
#(#)
)###
#(##
(##)
(##)
(#)#
(##)
(###
#(#)
(##)
#(#)
###)
#()#
()##
#(#)##
###
###(#)
)
和2 (
。每行只有1个吗?