Lösung von einer Aufgabe

SMoeller

Mitglied
Moin,
ich solle folgende Aufgabe so einfach wie möglich mit einer for - Schleife lösen:
abc
+caa
-----------
dca

Jeder Buchstabe besteht aus einer Zahl zwischen 0 und 9. Die 0 und die 9 eingeschlossen.
Das Programm soll durch systematisches Probieren alle Lösungen ermitteln.
 
SMoeller hat gesagt.:
Moin,
ich solle folgende Aufgabe so einfach wie möglich mit einer for - Schleife lösen:
abc
+caa
-----------
dca

Jeder Buchstabe besteht aus einer Zahl zwischen 0 und 9. Die 0 und die 9 eingeschlossen.
Das Programm soll durch systematisches Probieren alle Lösungen ermitteln.

Du verwendest vier ineinander verschachtelte for-Schleifen, für jede Variable eine. Jede läuft von 0 bis 9. Im Schleifekörper überprüfst du, ob (a*100 + b*10 + c + c*100 + a*10 + a) = (d*100 + c*10 + a). Wenn ja, hast du eine Lösung gefunden und gibst sie aus.
 
Hey,
Ich bin bei ihm in der Klasse und mich interessiert wie du zu dieser Lösung gekommen bist ;) Könntest du das bitte kurz erläutern?
btw: Einer aus unserer Klasse meinte er hätte es in EINER for-schleife gepackt! Das gab mir sehr zu denken ;)
 
Hallo!

Diese naive Lösung klappt natürlich nur mit dieser Aufgabe ;-)
Code:
   package de.tutorials;
   
   /**
    * @author Tom
    * 
    */
   public class SimpleMathExample {
   
   	/**
   	 * @param args
   	 */
   	public static void main(String[] args) {
   		boolean solved = false;
   
   		int a = 0;
   		int b = 0;
   		int c = 0;
   		int d = 0;
   
   		for (a = 1; a < 10; a++) {
   			b = 10 - a;
   			d = (b + a) / 10 + a;
   
 			solved = d < 10
  				    && (b != a)
 				 && (d * 100 + c * 10 + a) == (a * 100 + b * 10 + c + c
 						 * 100 + a * 10 + a);
   
   			if (solved) {
   				System.out.println();
   			    System.out.println("  " + a + b + c);
 				System.out.println("+ " + c + a + a);
   				System.out.println("-------");
   			    System.out.println("  " + d + c + a);
   			}
   		}
   	}
   }

Gruß Tom
 
Ja, is schon klar, dass sich die Aufgabe reduzieren lässt (dass c gleich 0 sein muss, ist ja ziemlich ersichtlich). Denke aber nicht, dass das Sinn der Aufgabe war... oder vielleicht doch?
Ergänzung: Wenn die Angabe lautete, die Aufgabe so einfach wie möglich zu lösen, dann solltet ihr wirklich zuerst reduzieren: wie gesagt, c muss 0 sein, somit b gleich (10-a) und d gleich (a+1). Jetzt habt ihr jede Variable in Abhängigkeit von a definiert und müsst nur noch in einer Schleife die zehn Ziffern für a durchlaufen.

@Tsa: man probiert einfach für jede Variable alle Ziffern von 0 bis 9 durch. Um den Wert der drei(?)stelligen Zahlen zu ermitteln, musst du wissen, wie unser dezimales Zahlensystem aufgebaut ist: die zweite Ziffer hat z.B. die Wertigkeit 10, die dritte 100 etc.
Beispiel: 123 = 3*1 + 2*10 + 1* 100. Dann einfach noch vergleichen, ob die dritte auch wirklich die Summe der ersten beiden Zahlen ist.
 
Zuletzt bearbeitet:
Sorry, ich hab zwar schon einen Haken an das Thema gemacht, allerdings kapier ich folgenden Abschnitt von Thomas Code noch nicht so recht:
d = (b + a) / 10 + a;
 
Zurück