Java-программа для решения простой криптоарифметической головоломки [закрыто]JAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Java-программа для решения простой криптоарифметической головоломки [закрыто]

Сообщение Anonymous »

Изменить: моя программа теперь работает, но мне все еще нужны некоторые разъяснения по части else if (400*T + 40*O + 4*O == 1000*G + 100*O + 10*O + D), которая является ключевой для решения головоломки. Я просто хочу полностью понять каждую часть программы, спасибо.
Это только для ознакомления, и я потратил пару часов, пытаясь разобраться в этом. Я либо получаю все нули для переменных, либо это бесконечный цикл. Вот вопрос, как написано в книге:

В криптоарифметических головоломках математические уравнения записываются буквами. Каждая буква может быть цифрой от 0 до 9, но две одинаковые буквы не могут быть одинаковыми. Вот пример проблемы:

Код: Выделить всё

SEND + MORE = MONEY
Решением головоломки является S = 9, R = 8, O = 0, M = 1, Y = 2, E = 5, N = 6, D = 7. Напишите программу, которая находит решение криптоарифметической головоломки из следующего:

Код: Выделить всё

TOO + TOO + TOO + TOO = GOOD
Самый простой метод — использовать вложенный цикл для каждой уникальной буквы (в данном случае T, O, G, D). Циклы систематически присваивали каждой букве цифры от 0 до 9. Например, сначала можно попробовать T = 0, O = 0, G = 0, D = 0, затем T = 0, O = 0, G = 0, D = 1, затем T = 0, O = 0, G = 0, D = 2 и т. д., вплоть до T = 9, O = 9, 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);
}
}
}
}
}
//}
}
}
Как видите, я пытался поместить все циклы for в цикл while, чтобы контролировать все, это была одна из моих многочисленных попыток исправить ситуацию. Это не сработало (вообще), поэтому я закомментировал это.

Подробнее здесь: https://stackoverflow.com/questions/178 ... tic-puzzle
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»