0

경고 : 내가 부탁드립니다 응답 사람들을 도울 수 있도록 완전히 새로운 묻는 질문에 오버플로, 그래서 어떤 조언을 스택합니다.Integer를 임의의 determisitic 방정식으로 분해하는 방법은 무엇입니까?

필자는 원하는 결과를 얻기 위해 일부 유형의 분기 프로세스를 분해, 분해 또는 구현해야한다는 결론에 도달했습니다. 내가 틀렸다면 나에게 정정 해주세요, 나는 배울 점이 있습니다.

두 개의 다른 StackOverflow 답변에서 제공했습니다.

Decompose integers larger than 100 digits

https://softwareengineering.stackexchange.com/questions/195813/generating-random-math-expression

나는 문제가 일하고 있지만 완전히 적절한 솔루션을 이해하는 수학 배경이 없습니다. 그래서 단순한 대답 이상으로, 그러나 내가 스스로를 배우기 위해 선택할 수있는 기술에 대한 언급은 대단 할 것입니다.

내가 기대하는 바는 결과를 생성하는 데 사용할 수있는 알고리즘입니다.

여기 내가 원하는 일이 있습니다.

(56) 나는이 표현이 4 개 사업자로 제한해야합니다 (56) 동일 유한 크기의 임의의 수학 식을 생성 할 수 있도록하려면, 나는 정수가 말; 더하기, 빼기, 곱하기, 나누기.

따라서이 알고리즘의 결과로 예상되는 방정식은 다음과 같습니다.

입력 : 정수 56, 길이 4

결과 10 + 2 x 3 + 20 = 56

다른 예

입력 : 정수 (34), 길이 5

3 * 7/2 * 3 + 4 = 34

일부 메모 I 너를 채워줄거야. 내가 제공하는 정수로부터 이러한 무작위 표현을 생성 할 수 있기를 원한다. 운영자의 순서는 중요하지 않습니다. 효율성을 위해 실행하기 전에 결과를 알 필요가 있으므로 임의로 결과를 알지 못하는 상태에서 방정식을 생성하고 싶지 않습니다. 두 번째 예에서 전체 수를 실수로 처리하면 방정식이 올바르지 않게됩니다. 나는 개별 연산에 바닥 결과를 넣거나 소수점을 사용하기보다는 이전 정수로 반올림하기를 바란다. 나는 100 % 내림하지 않으려 고하지만 반올림 처리에 대한 귀하의 생각을 알려주십시오.

나는이 작업을 수행하는 방법에 대해 몇 가지 아이디어를 가지고 있지만 실제로이 문제에 대한 두 번째 눈을 학문 수준에서 이해하고 싶습니다.

아직 명확하지 않은 경우, 나는 스스로 가르칩니다. 귀하의 답변 주셔서 감사합니다! 나는이 놀라운 공동체가되기를 희망합니다.

답변

0

연산자 우선 순위를 무시한 것처럼 보입니다. 그런 다음 뒤에서 수식을 간단히 생성 할 수 있습니다.

e.e. 결과로 시작하십시오 (예 : 34). 그런 다음 임의의 연산자와 적합한 두 번째 피연산자 (예 :+4). 이렇게하면 원래 길이보다 길이가 짧은 30이라는 공식을 찾는 문제가 발생합니다. 길이 0에이를 때까지 이것을 수행하십시오.

임의로 연산자를 선택할 수 있습니다. 그러나 특정 범위에 머 무르려면 가능한 피연산자를 고려해야합니다. 나누기와 빼기의 경우 피연산자를 사용할 수 있습니다. 그러나 중간 결과가 미친 듯이 높아지기를 원하지 않는다면, 중간 결과를 제한하려고 할 수 있습니다. 곱셈의 경우 피연산자는 결과의 제수로 제한됩니다. 또한, 피연산자는 분명히 결과보다 작아야합니다.

+0

좋아, 내가하려고하는 것과 정확히 같아 보인다. 발생할 수 있다고 생각되는 한 가지 문제는 중재하는 동안 제로가되는 것을 어떻게 방지하여 더 이상의 작업을 적용 할 수 없게하는 것입니다. 아니면 내가 그것에 대해 걱정해야합니까? - 내가 0을 치면 항상 더하기/빼기를 ​​할 수 있다고 생각합니다. 당신의 생각? – PeterLNewton

+0

제안대로, 나는 특정 범위에 머물고 싶습니다. 확률을 사용하여 범위를 벗어날 수있는 값을 격리 할 수 ​​있다고 가정합니다. 이거 좀 더 자세히 설명해 주시겠습니까? 통제가 중요하며 제어 할 수없는 임의성을 원하지 않는다. – PeterLNewton

+0

확률은 필요 없습니다. 모든 연산에 대해 주어진 간격으로 숫자를 생성하는 피연산자 수가있을 것입니다. 이 중 하나를 선택하십시오. 0은 문제가되지 않습니다. + 및 /에 대해 적용 가능한 피연산자가 없습니다. 간격을 지정하여 0을 제외 할 수 있습니다. –

관련 문제