今天,您面临的挑战是生成表达式的所有可能的完整括号。
您的输入是一行可打印的ASCII一行,其中包含一个或多个用运算符分隔的术语。输入中可能还包含空格-您必须忽略它们。术语是[a-zA-Z0-9]
,运算符是[^ ()a-zA-Z0-9]
。您可以假设输入始终有效。
输出所有可能的方式以完全括住给定表达式,并用可选的尾随换行符将新行分隔开。
难道不是:
- 括号中的术语-仅在运算符周围加上括号。
- 重新排列条款。
- 输出任何空格。
输入/输出示例:
N
N
a * b
(a*b)
x_x_0
(x_(x_0))
((x_x)_0)
a * b|c|d
(a*(b|(c|d)))
(a*((b|c)|d))
((a*b)|(c|d))
((a*(b|c))|d)
(((a*b)|c)|d)
以字节为单位的最小代码获胜。
@Optimizer我列出了被视为运算符的确切正则表达式。
—
orlp 2015年
!
适合正则表达式,所以也适合↑
,但是↑
不能作为输入的一部分,因为它不是可打印的ASCII。
啊好吧。因此,除了术语外,其他任何东西都是运算符...
—
Optimizer
那么,术语和运算符总是一个字符长吗?
—
user81655
在此处插入与LISP相关的强制性双关语
—
猫
!
操作员吗?那↑
呢