전문
정수 는 항상 짝수 또는 홀수 입니다. 정수조차도 2로 나눌 수 있고 홀수는 아닙니다.
두 개의 정수를 추가하면 summand가 짝수인지 홀수인지에 따라 결과가 짝수인지 홀수인지 유추 할 수 있습니다.
- 짝수 + 짝수 = 짝수
- 짝수 + 홀수 = 홀수
- 홀수 + 짝수 = 홀수
- 홀수 + 홀수 = 짝수
마찬가지로 두 정수를 곱하면 인수가 짝수인지 홀수인지에 따라 결과가 짝수인지 홀수인지를 유추 할 수 있습니다.
- 짝수 * 짝수 = 짝수
- 짝수 * 홀수 = 짝수
- 홀수 * 짝수 = 짝수
- 홀수 * 홀수 = 홀수
따라서 덧셈과 곱셈 만 포함하는 수학 표현식에서 모든 변수의 균등 또는 홀수를 알면 결과가 짝수인지 홀수인지 유추 할 수 있습니다.
예를 들어 (68 + 99) * 37
짝수 + 홀수 ( 68 + 99
)는 홀수이고 홀수 배는 다른 홀수 ( odd * 37
)가 홀수이기 때문에 결과는 홀수 라고 확신 할 수 있습니다 .
도전
네 개의 문자 만 포함 된 문자열을받는 프로그램이나 함수를 작성하십시오 eo+*
. 이 문자열은 덧셈 ( )과 곱셈 ( ) 만 포함하는 접두사 표기법으로 주어진 수학적 표현을 나타냅니다 . 각각 은 임의의 짝수를 나타내고 각각 은 임의의 홀수를 나타냅니다.+
*
e
o
당신의 작업은 표현, 인쇄 또는 단일 반환 단순화하는 것입니다 e
또는 o
식의 결과가 짝수 또는 홀수인지에 따라 있습니다.
입력은 항상 유효한 접두사 표기법으로 가정합니다. 즉, 각 +
과 *
항상 대응 후에 발생한 두 피연산자를 가질 것이다. 이 피연산자는 단일 e
또는 또는 피연산자가있는 o
다른 표현식 +
또는 *
표현식 일 수 있습니다 .
예를 들어, 입력 *+eoo
을로 읽 mul(add(e, o), o)
거나 (e + o) * o
일반 접두사 표기법 으로 읽을 수 있습니다 . e
상기 첫번째 o
에 대응하는 피연산자 +
및 +eo
상기 최후 o
에 대응하는 오퍼랜드이다 *
.
명확히하기 위해 잘못된 접두사 표기법이있는 잘못된 입력이 있습니다.
eo
ooe
o+e
ee*
+*oe
+e*o
출력에서 단일 후행 줄 바꿈은 괜찮지 만 그렇지 않으면 e
짝수 또는 o
홀수에 대한 평문 이 출력되어야합니다.
바이트 단위의 가장 짧은 코드가 이깁니다.
테스트 사례
빈 줄은 유사한 경우를 시각적으로 구분하는 데 도움이됩니다.
e -> e
o -> o
+ee -> e
+eo -> o
+oe -> o
+oo -> e
*ee -> e
*eo -> e
*oe -> e
*oo -> o
+e+ee -> e
+e+eo -> o
+e+oe -> o
+e+oo -> e
+e*ee -> e
+e*eo -> e
+e*oe -> e
+e*oo -> o
+o+ee -> o
+o+eo -> e
+o+oe -> e
+o+oo -> o
+o*ee -> o
+o*eo -> o
+o*oe -> o
+o*oo -> e
*e+ee -> e
*e+eo -> e
*e+oe -> e
*e+oo -> e
*e*ee -> e
*e*eo -> e
*e*oe -> e
*e*oo -> e
*o+ee -> e
*o+eo -> o
*o+oe -> o
*o+oo -> e
*o*ee -> e
*o*eo -> e
*o*oe -> e
*o*oo -> o
++eee -> e
++eeo -> o
++eoe -> o
++eoo -> e
++oee -> o
++oeo -> e
++ooe -> e
++ooo -> o
+*eee -> e
+*eeo -> o
+*eoe -> e
+*eoo -> o
+*oee -> e
+*oeo -> o
+*ooe -> o
+*ooo -> e
*+eee -> e
*+eeo -> e
*+eoe -> e
*+eoo -> o
*+oee -> e
*+oeo -> o
*+ooe -> e
*+ooo -> e
**eee -> e
**eeo -> e
**eoe -> e
**eoo -> e
**oee -> e
**oeo -> e
**ooe -> e
**ooo -> o
+e+e+e+ee -> e
+o+o+o+oo -> o
*e*e*e*ee -> e
*o*o*o*oo -> o
+e+o+e+oe -> e
+o+e+o+eo -> o
*e*o*e*oe -> e
*o*e*o*eo -> e
+e*e+e*ee -> e
+o*o+o*oo -> o
*e+e*e+ee -> e
*o+o*o+oo -> o
+**++*+*eeoeeooee -> e
+**++*+***eooeoeooeoe -> e
+**+***+**++**+eooeoeeoeeoeooeo -> o
+e*o*e**eoe -> e
+*e+e+o+e**eeoe -> e
**o++*ee*++eoe*eo+eoo -> o
eval
OK를 사용하고 있습니까?