편집 : 이제는 내 프로그램이 작동하지만 "else if (400 * T + 40 * O + 4 * O == 1000 * G + 100 * O + 10 * O + D) "퍼즐을 푸는 열쇠입니다. 프로그램의 모든 부분을 완전히 이해하고 싶습니다. 감사합니다.간단한 암호 해독 퍼즐을 해결하기위한 Java 프로그램
이것은 검토 목적으로 만 사용되었으며, 몇 시간을 알아 내려고 노력했습니다. 나는 변수에 대해 모두 0을 얻거나 무한 루프입니다. 이 책에 쓰여있는 질문은 다음과 같습니다.
"암호 연산 퍼즐에서 수학 공식은 문자를 사용하여 작성됩니다. 각 문자는 0부터 9까지의 숫자 일 수 있지만 두 글자는 같을 수 없습니다. 샘플 문제 : SEND + MORE = 돈 퍼즐에 대한 해결책은 S = 9, R = 8, O = 0, M = 1, Y = 2, E = 5, N = 6, D = 7입니다. TOO + TOO + TOO = GOOD 가장 간단한 방법은 각 고유 문자 (이 경우 T, O, G, D)에 대해 중첩 루프를 사용하는 것입니다. 루프는 체계적으로 각 문자에 0에서 9까지의 숫자를 할당합니다. 예를 들어, T는 0, O는 0, G는 0, D는 0, 0은 0, O는 0, G는 0, D는 1, T = 9, O = 9까지 T = 0, O = 0, G = 0, D = 2 등 , G = 9, D = 9. 루프 본문에서 각 변수가 고유하고 방정식이 만족하는지 테스트합니다. 출력 방정식을 만족하는 문자에 대한 값. "
public class PracticeProjectEight
{
public static void main(String[] args)
{
int T = 0 , O = 0 , G = 0 , D = 0;
boolean keepGoing = true;
//boolean againT = true , againO = true , againG = true , againD = true ;
// while (keepGoing)
//{
for (T = 0 ; T > 10 ; T++)
{
for (O = 0 ; O > 10 ; O++)
{
for (G = 0 ; G > 10 ; G++)
{
for (D = 0 ; D > 10 ; D++)
{
if ((D == G) || (D == O) || (D == T) || (G == O) || (G == T) || (O == T))
{
//keepGoing = true;
continue;
}
else if (400*T + 40*O + 4*O == 1000*G + 100*O + 10*O + D)
{
//keepGoing = false;
System.out.println("T = " + T);
System.out.println("O = " + O);
System.out.println("G = " + G);
System.out.println("D = " + D);
System.exit(0);
}
}
}
}
}
//}
}
}
당신이 볼 수 있듯이, 나는 모든. 그것은 didn를 해결하기 위해 나의 많은 시도의 하나로서 모든 것을 제어하는 while 루프에서 루프에 대한 넣어 시도 ... '는 t가 (전혀) 작동, 그래서 그것을 주석
@ Dennis Meng 감사합니다! 그것은 트릭을 수행하고 continue 문을 삭제하고 빈 if body 문을 가질 수있었습니다. 내가 만든 그러한 멍청한 실수는 잡았어야했는데, 나는 그 권리를 당하고 다른 곳에서 버그를 찾았다. 또한 누구나 "else if (400 * T + 40 * O + 4 * O == 1000 * G + 100 * O + 10 * O + D)"를 더 자세히 설명합니다. 다시 고마워. – novice9
발생합니다. 다행히 도울 수있어. –
'else if (400 * T + 40 * O + 4 * O == 1000 * G + 100 * O + 10 * O + D)'는 그것이 솔루션인지 여부를 실제로 확인하는 것입니다. "TOO"는'T'가 수백 자리이고'O'가'100 * T + 10 * O + O'를주는 십 자리수와 1 자리수라는 것을 의미합니다. 실제로는 너무 많으므로 4를 곱하면됩니다. TOO + TOO + TOO + TOO'는 왼편에서 원했던 것입니다. 오른손은 비슷하게 따른다. –