Java-Programm zum Lösen eines einfachen kryptarithmetischen Rätsels [geschlossen]Java

Java-Forum
Anonymous
 Java-Programm zum Lösen eines einfachen kryptarithmetischen Rätsels [geschlossen]

Post by Anonymous »

Bearbeiten: Ich habe mein Programm jetzt zum Laufen gebracht, benötige aber noch etwas Klarstellung für den else if (400*T + 40*O + 4*O == 1000*G + 100*O + 10*O + D)-Teil, der der Schlüssel zur Lösung des Rätsels ist. Ich möchte nur jeden Teil des Programms vollständig verstehen, danke.
Dies dient nur zu Überprüfungszwecken und ich habe ein paar Stunden damit verbracht, es herauszufinden. Entweder erhalte ich nur Nullen für die Variablen, oder es ist eine Endlosschleife. Hier ist die Frage, wie sie im Buch steht:

In kryptarithmetischen Rätseln werden mathematische Gleichungen mit Buchstaben geschrieben. Jeder Buchstabe kann eine Ziffer von 0 bis 9 sein, aber keine zwei Buchstaben dürfen gleich sein. Hier ist ein Beispielproblem:

Code: Select all

SEND + MORE = MONEY
Eine Lösung für das Rätsel ist S = 9, R = 8, O = 0, M = 1, Y = 2, E = 5, N = 6, D = 7. Schreiben Sie ein Programm, das eine Lösung für das kryptarithmetische Rätsel des Folgenden findet:

Code: Select all

TOO + TOO + TOO + TOO = GOOD
Die einfachste Technik besteht darin, für jeden einzelnen Buchstaben (in diesem Fall T, O, G, D) eine verschachtelte Schleife zu verwenden. Die Schleifen würden jedem Buchstaben systematisch die Ziffern von 0 bis 9 zuweisen. Es könnte beispielsweise zuerst T = 0, O = 0, G = 0, D = 0, dann T = 0, O = 0, G = 0, D = 1, dann T = 0, O = 0, G = 0, D = 2 usw. bis zu T = 9, O = 9, G = 9, D = 9 versucht werden. Testen Sie im Schleifenkörper, ob jede Variable eindeutig ist und die Gleichung erfüllt ist. Geben Sie die Werte für die Buchstaben aus, die die Gleichung erfüllen.

Code: Select all

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);
}
}
}
}
}
//}
}
}
Wie Sie sehen können, habe ich als einen meiner vielen Versuche, das Problem zu beheben, versucht, alle for-Schleifen in eine While-Schleife zu packen, um alles zu steuern. Es hat (überhaupt) nicht funktioniert, also habe ich es auskommentiert.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post