2014-11-25 3 views
-1

24 게임은 4 개의 정수를 조작하여 최종 결과가 24가되도록하는 수학 게임입니다. 숫자의 순서에 따라 더하기, 빼기, 곱하기 또는 나눗셈 1에서 9까지의 네 자리 연산을 24로 만드는 데 사용할 수 있습니다.수학 24 게임 Java

규칙은 간단합니다. 사용자는 하나의 방정식을 찾기 위해 각 숫자를 한 번만 사용하고 사용자로부터 읽은 4 개의 숫자 만 사용해야합니다. 24.

예를 들어 4,7,8,8의 경우 가능한 해결책은 (7- (8/8)) * 4 = 24입니다.

4 자릿수

대부분의 세트가 복수 24 초래할 식에 사용될 수 예는 입력을위한 2, 2, 4, 7 (24)을 얻기 위해 여러 가지로 사용될 수있다

2 + 2 * (4 + 7) =

2 + 2 * (7 + 4) = 24

(2 + 2) * 7-4 = 24

(2 * 2) * 7-4 24 = 24

2 * (2 * 7) -4 = 24

또한 24와 같은 방정식을 초래할 수없는 4 개의 숫자 조합도 있습니다. 예를 들어 1,1,1,1. 이 경우 프로그램은 24와 같은 가능한 방정식이 없음을 반환해야합니다.

참고 : 1에서 9 사이의 4 개의 정수를 입력하지만 모든 연산을 계산할 때는 double을 사용합니다. 예를 들어 숫자 3, 8, 8을 수식 8/(3-8/3) = 24에 결합 할 수 있습니다.

워크 플로 : 프로그램에서 사용자의 4 개의 숫자를 읽고 수식은 24가됩니다. 알고리즘은 4 개의 숫자, 모든 가능한 조합 및 가능한 모든 수식의 가능한 모든 순서를 열거해야합니다. 이 프로젝트에는 GUI가 필요하지 않습니다. 모든 64 개의 가능한 콤보에 대해 연산자를 뒤섞는 방법에 대한 도움이 필요합니다. 그래서 4 개의 연산자와 3이 각 방정식에 사용되고 방정식 중에 괄호를 고려합니다. 어디서부터 시작해야할지 모르겠습니다.

+3

''어디서부터 시작해야할지 모르겠습니다. ''점진적으로 프로그램을 작성하십시오. 먼저 사용자로부터 입력을 받아들이고 그것을 출력하는 프로그램을 작성하십시오. 그런 다음 필요할 때까지 기능을 추가하십시오. – azurefrog

+0

나는 그 부분을했는데, 나는 기능성을 알아 내는데 도움이 필요했다. 어떻게하면 모든 가능한 방정식을 생성하도록 연산자를 뒤섞는 방법을 쓰려고 할 것입니다. 나는 abcd의 24 콤보로 2 차원 배열을 반환하는 순열 법을 작성했다. 방금 방정식을 형성하는 연산자를 얻는 다른 방법을 실제로 구현하는 방법을 궁금 해서요. – n94pro

+0

작성한 코드를 표시하십시오. –

답변

1

문자열의 순열을 생성 할 수있는 경우. 당신은 모든 수에 대해 가능한 모든 순열을 얻으려면 그렇게해야합니다.

이제 연산자의 순열을 플러그인하면됩니다 (한 번에 3 개씩).

이렇게 연산자의 모든 순열을 생성하고 배열에 저장할 수 있습니다. 각 경우마다 일정하게 유지됩니다. 생성 된 각 순열 중에서 4 개의 가능한 그룹 중 3 개의 그룹을 볼 때 처음 3 자만 선택하십시오.

일단 그렇게되면 숫자의 순열을 읽은 다음 연산자의 순열을 읽고 표현식을 평가하면됩니다.

참고로 Java에서 문자열의 순열을 찾는 간단한 demo을 만들었습니다. 성공적 문자열의 모든 순열을 생성 할 수있는 경우

public void permut(String str1,String str2){ 
    if(str2.length() != 0){ 
    char ch = str2.charAt(0); 
    for(int i = 0; i <= str1.length();i++) 
     permut(str1.substring(0,i) + ch + str1.substring(i,str1.length()), 
       str2.substring(1,str2.length())); 
    }else{ 
    System.out.println(str1); 
    } 
} 

것은, 위의 운동을 행할 수 있어야한다 : 재귀 함수의 (a relevant SO 포스트에서) 같이 보입니다. 나는 그것이 당신이 올바른 방향으로 시작하도록하기를 바랍니다.

+0

유용한 ... – GvSharma

+0

나는 당신이 parantheses가 무작위로 설정할 수 있다는 사실을 놓치고 있다고 생각합니다. – Turakar

+0

모든 순열을 시도하면 연산자 우선 순위에 따라 괄호가 처리됩니다. 괄호 안의 것은 표현에 대해 다른 순열을 생성하는 방법 일뿐입니다. –