도전
귀하는 Coyote Beta 라는 놀라운 서비스의 소유자입니다.이 서비스 는 사용자가 인터넷을 통해 수학 질문에 마술로 대답합니다.
그러나 대역폭이 비싸다는 것이 밝혀졌습니다. " 코요테 베타 프로"를 만들거나이 문제를 해결할 방법을 찾는 두 가지 방법이 있습니다. 최근에 누군가가 질문했습니다 (x + 2)
. 클라이언트가를 보낼 수 없으며 x+2
사용자에게 차이가 보이지 않습니까?
작업
당신의 작업은 수학 표현을 "최소화"하는 것입니다. 입력 표현식이 주어지면 동일한 입력을 최소한으로 나타낼 때까지 공백과 괄호를 제거해야합니다. 연관 연산 주위의 괄호는 보존 할 필요가 없습니다.
여기에 주어진 유일한 사업자는 +
, -
, *
, /
, 및 ^
표준 수학 연관성 및 우선 순위 (지수). 입력에 주어진 공백은 실제 공백 문자입니다.
샘플 입력 / 출력
Input | Output
------------|--------------
(2+x) + 3 | 2+x+3
((4+5))*x | (4+5)*x
z^(x+42) | z^(x+42)
x - ((y)+2) | x-(y+2)
(z - y) - x | z-y-x
x^(y^2) | x^y^2
x^2 / z | x^2/z
- (x + 5)+3 | -(x+5)+3
채점
입력 / 출력은 선호하는 방법을 사용할 수 있습니다. 바이트 단위의 가장 작은 프로그램이 이깁니다.
정확한 비트
지수는 올바른 연관성이 있으며 표준 수학 우선 순위 (높은 수준)를 따릅니다. 유효한 숫자 리터럴은 /[0-9]+/
이고 유효한 변수 리터럴은 /[a-z]+/
입니다. 단일 변수 리터럴은 문자 길이가 1보다 길더라도 단일 값을 나타냅니다.
"연관 연산 주위의 괄호를 보존 할 필요는 없다"는 의미는 연산이 재 배열 될 수 있다는 점을 제외하고 출력이 동일한 구문 분석 트리를 생성하는 표현식으로 구성되어야한다는 것입니다.
/[a-z]+/
인 경우 병치에 의한 곱셈 ab
이 허용되지 않음 을 의미 합니까?
2+(3+4)
으로 변경 하고 싶 2+3+4
습니까? 구문 분석 트리가 변경됩니다.
x^(y/2)=x^y/2
. 지수가 높은 우선 순위 ergo,를 갖습니다 x^y/2=(x^y)/2
.
Prompt X:expr(X)
TI-BASIC 에 제출하려고 했지만 단순화 할 수는 없습니다 :(