在APL中,您可以编写默认的函数,称为trains。他们的工作方式与这一挑战无关。以下是将它们⍴
作为函数进行分组的不同方法:
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴⍴))
...
顺序保持不变。程序是,只要严格存在3个以上的功能,则将后3个功能分组为一个功能。如果遇到嵌套火车,我们先将其括起来,然后再继续。这是适用于的过程⍴⍴⍴⍴⍴⍴
:
Step 0: ⍴⍴⍴⍴⍴⍴
There are strictly more than 3 functions, repeat.
Step 1: ⍴⍴⍴(⍴⍴⍴)
There are strictly more than 3 functions, repeat.
Step 2: ⍴(⍴⍴(⍴⍴⍴))
There are 3 or less functions, we're done.
这是适用于的相同过程⍴⍴⍴(⍴⍴)⍴(⍴⍴⍴⍴(⍴⍴⍴))⍴⍴
:
Step 0: ⍴⍴⍴(⍴⍴)⍴(⍴⍴⍴⍴(⍴⍴⍴))⍴⍴
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴⍴⍴(⍴⍴⍴)
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴⍴
There are 3 or less functions, we're done.
Step 1: ⍴⍴(⍴⍴(⍴⍴⍴))
There are 3 or less functions, we're done.
Step 1: ⍴⍴⍴(⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴)
There are strictly more than 3 functions, repeat.
We have met a nested train, applying procedure to that first:
Step 0: ⍴⍴
There are 3 or less functions, we're done.
Step 2: ⍴⍴⍴((⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴))
There are strictly more than 3 functions, repeat.
Step 3: ⍴(⍴⍴((⍴⍴)⍴((⍴⍴(⍴⍴(⍴⍴⍴)))⍴⍴)))
There are 3 functions or less, we're done.
输入项
对于这一挑战,将简化输入。这意味着您可以选择2个不同的字符作为括号的开合符,为函数选择1个字符,这与为括号选择的字符不同。您选择的字符必须一致。输入将不为空,并且将不包含不包含任何内容的括号(即()
)。
输出量
同样,您可以选择3个不同的字符,2个用于括号,1个用于函数。请注意,它们不必与为输入选择的那些相同,但它们必须是一致的。
规则
- 如果有括号仅在输入中包含一个函数,则必须在输出中将其删除。您的输出可能不包含不需要的括号(即仅包含一个函数或包含整个输出)。
- 只要您的解决方案对这一挑战有效,就无需实现此处使用的算法。
- 输入和输出是“输入和输出”部分中说明的格式的字符串。输入内容将至少包含一个字符。
- 严格禁止使用标准漏洞。
- 这是代码高尔夫球,因此最短的答案会获胜。但是,将不会接受答案,因为这是一场针对每个语言的竞赛,并且鼓励使用与该语言相比使用其他语言编写的代码更长的语言进行回答。
测试用例
这里使用的字符是()⍴
,您应将其替换为您选择的字符。
⍴ -> ⍴
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴⍴))))))
⍴⍴⍴⍴⍴(⍴⍴⍴)⍴⍴(⍴(⍴⍴⍴)⍴⍴⍴)⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴((⍴⍴⍴)⍴(⍴(⍴(⍴⍴⍴)(⍴⍴⍴))(⍴⍴⍴)))))
(⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴) -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
(⍴⍴⍴)(⍴⍴⍴)⍴⍴⍴ -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
⍴⍴(⍴)⍴⍴ -> ⍴⍴(⍴⍴⍴)
((⍴⍴)) -> ⍴⍴
⍴⍴((⍴⍴))⍴⍴ -> ⍴⍴((⍴⍴)⍴⍴)
此挑战已发布在沙盒中。如果您具有所需的特权,则可以在此处查看沙盒帖子。