给定代表函数定义的字符串输入,输出带有换行符和空格的字符串,以使函数的参数以换行符分隔并对齐。
输入字符串将遵循以下模式:
首先,它将以前缀开头,该前缀始终至少一个字符长,并且不包含任何字符
,()
。(
然后,括号()将标记参数列表的开始。然后是零个或多个参数的列表。这些由字符串
", "
(逗号,然后是空格)分隔。所有参数均不包含任何字符,()
。圆括号(
)
)将标记参数列表的结尾。最后,可以找到一个后缀,该后缀的长度为零个或更多,并且 可能包含字符
,()
。
输入字符串将仅由可打印的ASCII组成(这意味着它绝不会包含换行符)。
输出必须是:
前缀(逐字向下复制)和右括号。
参数列表,这次不是用
", "
逗号,换行符分隔,而是垂直对齐每个参数的第一个字符所需的空格。封闭括号和后缀(如果存在)逐字记录。
由于这是code-golf,因此以字节为单位的最短代码将获胜。
测试用例(格式:单行输入,然后是输出,然后是双换行):
def foo(bar, baz, quux):
def foo(bar,
baz,
quux):
int main() {
int main() {
fn f(a: i32, b: f64, c: String) -> (String, Vec<i32>) {
fn f(a: i32,
b: f64,
c: String) -> (String, Vec<i32>) {
function g(h) {
function g(h) {
def abc(def, ghi, jkl, mno)
def abc(def,
ghi,
jkl,
mno)
x y z(x, y, z) x, y, z)
x y z(x,
y,
z) x, y, z)
a>>" "
真的很聪明……