오늘 당신의 도전은 표현의 가능한 모든 괄호를 생성하는 것입니다.
입력은 연산자로 구분 된 하나 이상의 용어를 포함하는 인쇄 가능한 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
!
는 정규식에 적합 ↑
하지만 ↑
인쇄 가능한 ASCII가 아니기 때문에 입력의 일부가 될 수 없습니다.
아 알았어 용어를 제외한 모든 것은 연산자입니다.
—
Optimizer
용어와 연산자는 항상 한 문자 길이입니까?
—
user81655
필수 LISP 관련 말장난을 여기에 삽입
—
고양이
!
운영자는? 무엇에 대해↑
?