Jack은 C 프로그래밍 언어를 좋아하지만 V=a*b*h;
값을 곱하는 식을 쓰는 것을 싫어 합니다.
그는 V=abh;
대신 에 작성하고 싶습니다 . 왜냐하면 컴파일러 가 정의 된 abh
이후 int a, b, h;
정의 되지 않은 기호에 대해 신음해야 하므로 곱셈을 추론 할 수 있습니까?
현재 범위에 정의 된 변수 세트가 알려진 경우 단일 곱셈 항을 해독하는 구문 분석기를 구현하는 데 도움이됩니다.
단순화를 위해 숫자를 (로 2*a*b
) 곱하는 것은 고려되지 않으며 변수 만 나타납니다.
입력 값은 정규 표현식을 충족 하는 곱셈 항 T입니다 .
[a-zA-Z_][a-zA-Z_0-9]*
가변 설정 Z .
변수 세트 Z에 대한 용어 T의 구문 분석 P는 다음을 충족하는 문자열입니다.
*
P에서 발생하는 모든 것을 제거한 후 우리는 T를 받는다.- Z의 변수 이름이거나 단일
*
문자로 분할 된 Z의 적절한 변수 이름으로 구성됩니다 .
솔루션은 용어의 모든 구문 분석을 인쇄해야합니다.
견본:
Vars a, c, ab, bc
Term abc
Solution ab*c, a*bc
Vars ab, bc
Term abc
Solution -
Vars -
Term xyz
Solution -
Vars xyz
Term xyz
Solution xyz
Vars width, height
Term widthheight
Solution width*height
Vars width, height
Term widthheightdepth
Solution -
Vars aaa, a
Term aaaa
Solution aaa*a, a*aaa, a*a*a*a
입력 (변수 목록 및 용어)은 언어에 적합한 방식으로 제공 될 수 있습니다.
출력은 합리적인 형식 (행당 하나의 구문 분석 또는 쉼표로 구분 된 목록 등) 일 수 있지만 모호하지 않고 읽을 수 있어야합니다.
용어의 구문 분석이 불가능한 경우 빈 출력이 허용됩니다 (예에서는 명확성을 위해 '-'를 사용했습니다).
이것은 코드 골프이므로 가장 짧은 코드가 승리합니다.
a*aaa aaa*a
하지ab*c c*ab
ab*c
때문에 잘못된 구문 분석 이라고 생각c
합니다.