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을 선택할 수 있습니다. 입력을 위해 선택한 것과 동일 할 필요는 없지만 일관성이 있어야합니다.
규칙
- 입력에서 하나의 함수 만 묶는 괄호가 있으면 출력에서 제거해야합니다. 출력에 불필요한 괄호가 포함되어 있지 않을 수 있습니다 (즉, 하나의 함수 만 포함하거나 전체 출력을 포함).
- 솔루션이이 과제에 유효한 경우 여기에 사용 된 알고리즘을 구현할 필요가 없습니다.
- 입력 및 출력은 입력 및 출력 섹션에 설명 된 형식의 문자열입니다. 입력은 하나 이상의 문자를 갖습니다.
- 표준 허점을 사용하는 것은 엄격히 금지되어 있습니다.
- 이것은 code-golf 이므로 가장 짧은 답변이 이깁니다. 그러나 이는 언어 별 경쟁이므로 다른 언어로 작성된 코드와 비교하여 더 긴 코드를 생성하는 언어로 응답하도록 장려하기 때문에 허용되는 답변은 없습니다.
테스트 사례
여기에 사용 된 문자는 ()⍴
선택한 문자로 바꿔야합니다.
⍴ -> ⍴
⍴ -> ⍴
⍴⍴ -> ⍴⍴
⍴⍴⍴ -> ⍴⍴⍴
⍴⍴⍴⍴ -> ⍴(⍴⍴⍴)
⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴⍴ -> ⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴(⍴⍴⍴))))))
⍴⍴⍴⍴⍴(⍴⍴⍴)⍴⍴(⍴(⍴⍴⍴)⍴⍴⍴)⍴⍴⍴ -> ⍴(⍴⍴(⍴⍴((⍴⍴⍴)⍴(⍴(⍴(⍴⍴⍴)(⍴⍴⍴))(⍴⍴⍴)))))
(⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴) -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
(⍴⍴⍴)(⍴⍴⍴)⍴⍴⍴ -> (⍴⍴⍴)(⍴⍴⍴)(⍴⍴⍴)
⍴⍴(⍴)⍴⍴ -> ⍴⍴(⍴⍴⍴)
((⍴⍴)) -> ⍴⍴
⍴⍴((⍴⍴))⍴⍴ -> ⍴⍴((⍴⍴)⍴⍴)
이 도전은 샌드 박스에 게시되었습니다. 필요한 권한이 있으면 여기 에서 샌드 박스 게시물을 볼 수 있습니다 .