이 답변 (강조 광산)에서 영감을 얻었습니다 .
우리는 게임을 할 것입니다. 숫자 x 가 있다고 가정하십시오 . 당신은 시작 X 다음은 제로 제외하고, 정수, 곱하기 또는 나누기, 더하기, 빼기 할 수 있습니다. x를 곱할 수도 있습니다 . 이 작업을 원하는 횟수만큼 수행 할 수 있습니다. 합계가 0이되면 승리합니다.
예를 들어 x 가 2/3 라고 가정 합니다. 3을 곱한 다음 2를 빼십시오. 결과는 0입니다. 네가 이겼다!
x 가 7 ^ (1/3) 이라고 가정합니다 . x를 곱한 다음 x를 다시 곱한 다음 7을 빼십시오.
x 가 √2 + √3 이라고 가정합니다 . 이기는 방법을보기가 쉽지 않습니다. 그러나 x 를 곱하고 10을 빼고 x를 두 번 곱한 다음 1을 더하면 승리합니다. (이것은 명백하지 않아야하며 계산기로 시도 할 수 있습니다.)
그러나 x = π로 시작 하면 이길 수 없습니다. 걸음 수에 관계없이 정수를 더하거나 빼거나 곱하거나 나누거나 π를 곱하면 π에서 0으로 갈 수있는 방법이 없습니다. (이것은 명백하지도 않습니다. 매우 까다로운 일입니다!)
이길 수있는 √2 + √3와 같은 숫자를 대수라고 합니다. 이길 수없는 π와 같은 숫자를 초월 적이라고합니다.
왜 이것이 흥미로운가요? 각 대수는 정수와 산술적으로 관련되어 있으며 게임에서 승리 한 동작은 그 방법을 보여줍니다. 0으로가는 경로는 길고 복잡 할 수 있지만 각 단계는 간단하며 경로가 있습니다. 그러나 초월 숫자는 근본적으로 다릅니다. 간단한 단계를 통해 정수와 산술적으로 관련이 없습니다.
기본적으로 위에서 언급 한 질문에 사용 된 단계를 사용하여 주어진 입력에 대해 게임을 "승리"합니다.
실제 대수 상수가 주어지면 x다음과 같이 허용되는 연산을 사용하여 숫자를 0으로 변환하십시오.
- 정수를 더하거나 빼십시오.
- 0이 아닌 정수로 곱하거나 나눕니다.
- 원래 상수를 곱하십시오
x.
입력은 정수, 덧셈, 뺄셈, 곱셈, 나눗셈, 지수 ( **또는 ^, 지수는 근을 나타내는 데 사용됨) 및 괄호를 포함 할 수있는 문자열입니다 . 입력의 공백은 선택 사항이지만 출력에는 없습니다. 0의 결과를 얻는 데 필요한 단계를 출력해야하므로 7한 단계를 곱하면 로 출력됩니다 *7. 후행 공백 및 / 또는 줄 바꾸기가 허용됩니다.
예
0 -> +0 (or any other valid, or empty)
5/7 + 42 -> -42 *7 -5 (or shorter: *7 -299)
2^(1/3) -> *x *x -2
5*(3**(1/4)) -> *x *x *x -1875
2^(1/2)+3^(1/2) -> *x -10 *x *x +1
가장 짧은 코드가 승리합니다.
x^4-10*x^2+1입니다. WolframAlpha

0결과는 얼마나 가까이 있어야합니까? 오류 및 부동 소수점 정밀도를 반올림 감안할 때, 난 쉽게 문제 상황을 볼 수 있었다 ...