# Zahlenrätsel



## MoGMoG (23. Nov 2009)

Hallo,

ich soll ein Zahlenrätsel als Hausaufgabe von einem Programm lösen lassen die Grundidee habe ich auch schon aufgeschrieben und codiert allerdings stellt mich der auswurd der Console alles andere als zufrieden welchen Fehlerhabe ich gemacht? 

public class ZahlenRaetsel
{
   public static void main(String args[])
   {
       for ( int h = 0; h < 10; h++ )
       {
           for ( int e=0 ; e<10; e++)
           {
               for ( int s=0; s<10; s++)
               {
                   for ( int t=0; t<10; t++)
                   { 
                       for ( int b=0; b<10; b++)
                       {

                           int hes = 100 * h + 10 * e + s;
                           int the = 100 * t + 10 * h + e;
                           int best = 1000* b + 100 * e + 10 * s + t;
       if  ( (hes + the) == best)
       System.out.println(best);

    }
}
}
}
}
}

}

Greets


----------



## guni (23. Nov 2009)

was is denn die genaue aufgabenstellung?!


----------



## HoaX (23. Nov 2009)

Das Rätsel ist jetz dass wir raten sollen was das gestellte Rätsel und was das genaue Problem ist?


----------



## MoGMoG (23. Nov 2009)

Schreiben Sie ein Programm, das das folgende Symbolrätsel löst, indem alle Ziffernkombinationen durchprobiert werden. Nummerieren Sie ihre Lösungen durch und geben Sie für jede die oben dargestellte Ziffernnotation aus.

      H E S
    + T H E
    -------
    B E S T


----------



## MoGMoG (23. Nov 2009)

ich bekomme von der Console folgende Ergebnisse ausgespuckt :

0
796
583
370
1268
1055
842
1527
1314
1101

Ich gehe mal davon aus das sie stimmen  alles dings bin ich ein wenig überfragt wie ich sie durch Nummerieren soll


----------



## guni (23. Nov 2009)

```
if ( (hes + the) == best )
   System.out.println("Lösung "+(++no)+": "+hes+" + "+the+" = "+best);
```
meinst du sowas?!


----------



## MoGMoG (23. Nov 2009)

es gibt halt verschieden lösungen dafür die möglich sind und ich soll diese durch nummerieren mit 1. 2. 3. ...

habs so versucht

int i = 1 
System.out.println(i + ". Best = " + best);
i++;

allerdings bringt er das i mit in die gleichung ein


----------



## Marco13 (23. Nov 2009)

Wie praktisch für dich, dass es von diesem ausgezeichneten Buch zufällig gerade _dieses_ Kapitel als Vorschau gibt:  http://aima.cs.berkeley.edu/newchap05.pdf 

Stichwort "cryptarithmetic"....


----------



## Michael... (23. Nov 2009)

Dürfen unterschiedliche Buchstaben, den gleichen Wert annehmen?
Wenn nein, dann muss das noch überprüft werden

```
505
+550
----
1055
```


----------



## guni (23. Nov 2009)

was meinst du mit "er bringt das i mit in die gleichung ein"?
hast du int i eh ausserhalb deiner Schleifen deklariert?!
das i++ kannst du - denke ich - auch direkt in dein System.out setzen wenn du die klammern richtig setzt ...


----------



## guni (23. Nov 2009)

@Marco: interessantes PDF dass du da verlinkst. ist runtergeladen und wird bei gelegenheit mal genauer unter die lupe genommen ;-)


----------



## Marco13 (23. Nov 2009)

(Pssst ... auf Artificial Intelligence: A Modern Approach gibt's noch mehr infos zu DEM Buch ... und auch fix-und-fertigen Java-Code )


----------



## guni (23. Nov 2009)

hmm ... schade das es nicht das Ganze Buch gibt :-(
(ich mein jetzt als "gratis" PDF zum DL) ...


----------



## Marco13 (23. Nov 2009)

Liegt im Moment mal wieder bei mir zuhause auf dem Schreibtisch ... wollte mal so eine Art "KI-Framework" schreiben  (Auch wenn ich eigentlich keine Zeit dafür habe  ). Ist nur schwierig...: Den Code einfach so runterschreiben, wie er im Buch steht, ist eigentlich sinnlos, weils ja schon einen Großteil des Codes gibt - andererseits rollen sich mir bei Teilen des Codes eben die Fußnägel hoch :autsch: Und eine "schönere" API wäre wünschenswert... ist aber entsprechend aufwändig...
Wie auch immer.
Das Buch lohnt sich schon. Mehr wollte ich eigentlich nicht sagen


----------

