Zahlenrätsel programmieren

vince191

Mitglied
Hallo zusammen, ich bin neu hier und auch neu in der Java Programmierung.

Ich muss folgende Aufgabe lösen und komme überhaupt nicht weiter, vielleicht kann mir jmd weiterhelfen...

Schreiben Sie ein Programm, das das folgende Symbolrätsel löst, indem alle Ziffernkombinationen durchprobiert und alle gültigen Kombinationen ausgegeben werden.
H E S
+ T H E
-------
B E S T

Dabei soll folgendes beachtet werden:

Es ist nicht zulässig, dass zwei verschiedene Buchstaben für die gleiche Zahl stehen.

Schreiben Sie Ihr Programm zunächst so, dass es keine führende Null gibt, d.h. H, T und B müssen ungleich Null sein. Wieviel Lösungen gibt es?

Hier ist mein Quellcode das ich bis jetzt geschrieben habe, nur wenn ich es ausführe, kommen sehr viele unterschiedliche Ergebnisse, da ist bestimmt noch ein Fehler den ich nicht finden kann.

Java:
public class ZahlenRaetsel
{
    public static void main(String args[])
    {
        int h,e,s,t,b;
        for (h = 1; h <= 9; h++ )
        {
            for (e = 0 ; e <= 9; e++)
            {
                 for (s = 0; s <=  9; s++)
                 {
                    for (t = 1 ; t <= 9; t++)
                    {
                        for (b = 1; b <= 9; b++)
                        {
                                if (h != e && h != s && h != t && h != b &&
                                    e != s && e != t && e != b &&
                                    s != t && s != b &&
                                    t != b)
                                    
                            {
                                int hes = 100 * h + 10 * e + s;
                                int the = 100 * t + 10 * h + e;
                                int best = 1000* b + 100 * e + 10 * s + t;
                                System.out.println(best);
                            }       

                                                                  
                        }
                    }
                }
            }
        }
    }
}

Danke im Voraus :-D
 
Zuletzt bearbeitet von einem Moderator:

Kenta1561

Bekanntes Mitglied
Du musst überprüfen, ob das Ergebnis mit der zusammengesetzen Zahl übereinstimmt, siehe Code:

Java:
public class ZahlenRaetsel
{
    public static void main(String args[])
    {
        int h,e,s,t,b;
        for (h = 1; h <= 9; h++ )
        {
            for (e = 0 ; e <= 9; e++)
            {
                for (s = 0; s <= 9; s++)
                {
                    for (t = 1 ; t <= 9; t++)
                    {
                        for (b = 1; b <= 9; b++)
                        {
                            if (h != e && h != s && h != t && h != b &&
                                    e != s && e != t && e != b &&
                                    s != t && s != b &&
                                    t != b)

                            {
                                int hes = 100 * h + 10 * e + s;
                                int the = 100 * t + 10 * h + e;
                                int best = 1000* b + 100 * e + 10 * s + t;
                                //Du musst überprüfen, ob das Ergebnis mit der       zusammengesetzen Zahl übereinstimmt
                                int test = hes + the;
                                if(best == test) {
                                    System.out.println(best);
                                }
                            }


                        }
                    }
                }
            }
        }
    }
}
 
Zuletzt bearbeitet:

vince191

Mitglied
Hallöchen zusammen,

ich habe habe nun nach Kensta1561 beispiel mein Code vervollständigt...
nun bekomme ich als Ergebnis 1268.

Java:
public class ZahlenRaetsel
{
    public static void main(String args[])
    {
        int h,e,s,t,b;
        for (h = 1; h <= 9; h++ )
        {
            for (e = 0 ; e <= 9; e++)
            {
                 for (s = 0; s <=  9; s++)
                 {
                    for (t = 1 ; t <= 9; t++)
                    {
                        for (b = 1; b <= 9; b++)
                        {
                                if (h != e && h != s && h != t && h != b &&
                                    e != s && e != t && e != b &&
                                    s != t && s != b &&
                                    t != b)
                                    
                            {
                                int hes = 100 * h + 10 * e + s;
                                int the = 100 * t + 10 * h + e;
                                int best = 1000* b + 100 * e + 10 * s + t;
                                int test = hes + the;
                                if (hes + the == best)
                              
                                System.out.println(best);
                          
                            }       

                                                                  
                      }
                    }
                }
            }
        }
    }
}


Ich denke das ist nun richtig so.

Was denkt ihr?



Du musst überprüfen, ob das Ergebnis mit der zusammengesetzen Zahl übereinstimmt, siehe Code:

Java:
public class ZahlenRaetsel
{
    public static void main(String args[])
    {
        int h,e,s,t,b;
        for (h = 1; h <= 9; h++ )
        {
            for (e = 0 ; e <= 9; e++)
            {
                for (s = 0; s <= 9; s++)
                {
                    for (t = 1 ; t <= 9; t++)
                    {
                        for (b = 1; b <= 9; b++)
                        {
                            if (h != e && h != s && h != t && h != b &&
                                    e != s && e != t && e != b &&
                                    s != t && s != b &&
                                    t != b)

                            {
                                int hes = 100 * h + 10 * e + s;
                                int the = 100 * t + 10 * h + e;
                                int best = 1000* b + 100 * e + 10 * s + t;
                                //Du musst überprüfen, ob das Ergebnis mit der       zusammengesetzen Zahl übereinstimmt
                                int test = hes + the;
                                if(best == test) {
                                    System.out.println(best);
                                }
                            }


                        }
                    }
                }
            }
        }
    }
}
 
Zuletzt bearbeitet von einem Moderator:
X

Xyz1

Gast
Was spricht denn gegen sowas:
Java:
        int b, e, h, s, t;
        for (b = 1; b < 10; b++) {
            for (e = 0; e < 10; e++) {
                for (h = 1; h < 10; h++) {
                    for (s = 0; s < 10; s++) {
                        for (t = 1; t < 10; t++) {
                            if (       b != e
                                    && b != h
                                    && b != s
                                    && b != t
                                    && e != h
                                    && e != s
                                    && e != t
                                    && h != s
                                    && h != t
                                    && s != t) {
                                int hes = h * 100 + e * 10 + s;
                                int the = t * 100 + h * 10 + e;
                                int best = b * 1000 + e * 100 + s * 10 + t;
                                if (hes + the == best) {
                                    System.out.println("hab 'ne Lösung:");
                                    System.out.println(" hes =  " + hes);
                                    System.out.println(" the =  " + the);
                                    System.out.println("best = " + best);
                                    System.out.println("b = " + b);
                                    System.out.println("e = " + e);
                                    System.out.println("h = " + h);
                                    System.out.println("s = " + s);
                                    System.out.println("t = " + t);
                                    return;
                                }
                            }
                        }
                    }
                }
            }
        }

Code:
hab 'ne Lösung:
 hes =  426
 the =  842
best = 1268
b = 1
e = 2
h = 4
s = 6
t = 8

Zumindest, wenn alle Variablen paarweise verschieden sind, gibt es genau 1 Lösung.

(Btw.: Über Reflection, ich habs versucht, bekommt man keine Informationen über lokale Variablen: http://stackoverflow.com/questions/...out-the-local-variables-using-java-reflection - ein gänzlich anderer Ansatz wäre ratsam.)
 
X

Xyz1

Gast
Entschuldige wenn ich das frage: was spielt das hier für eine Rolle ? ;) Oder wolltest du einfach mal darüber reden ?

Das Spielt insofern eine Rolle, als dass ich sich das for-Geraffel hätte sparen können - als Semi-Professioneller sollte man das eigentlich wissen ... UND weil ich ja faul bin. :D
 

AndiE

Top Contributor
Es macht zwar heutzutage nicht viel Sinn. Ich habe ausgerechnet, dass etwa die Hälfte der Kombinationen Doppelungen aufweist. Gibt es einen Algorithmus, nur gültige Zahlenkombinationen zu testen, also welche, in denen es keine gleichen Zahlen gibt(12345,12354,12435 usw.)?
 
X

Xyz1

Gast
Joa, den gibt es, hab ich mal in C geschrieben (weil ja ganz schnell sein muss), macht aber von der Geschwindigkeitsperformance keinen Unterschied.
Btw.:
12345,12354,12435 das sind Permutationen
123, 124, 125, 132 usw. das sind Combinations without repetition
Zuerst muss dir klar sein, was du möchtest/willst.
 

vince191

Mitglied
Hallo nochmal,

da ich noch am anfang bin und dieses reflection noch nicht durchgenommen habe, kann ich es auch in dem Fall nicht anwenden. Ich kann nur den gelernten Stoff anwenden :)
 
X

Xyz1

Gast
@AndiE: Bitte nochmal Stoff aus dem 1. Semester wiederholen, für deine Frage (Hint: Kombinatorik).

@vince191: Das wissen wir. Ich habe dir, nach deinen Vorgaben, eine Vorlage deinen Kenntnisstand adäquat geliefert.

@JStein52: Bist du mir jetzt Bös, weil ich Semi-Professioneller geschrieben habe??
 

vince191

Mitglied
Hi nochmal....

kann mir jmd noch einen kleinen Tipp geben wenn ich meinen code so umschreiben will, so dass er drarauf achteten das h und/oder t = 0 sind und mit diese ergebnisse anzeigen muss?
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
J Zahlenrätsel Java Basics - Anfänger-Themen 6
M Zahlenrätsel Java Basics - Anfänger-Themen 13
N Hey Leute und zwar versuche ich gerade ein 2D Spiel zu Programmieren aber die Figur will sich nicht nach links oder rechts bewegen :( Java Basics - Anfänger-Themen 12
B OOP was heißt objektorientiertes Programmieren (fragt ein absoluter Anfänger) Java Basics - Anfänger-Themen 17
laxla123 Rechteck programmieren Java Basics - Anfänger-Themen 4
A Erste Schritte Dynamische Stempel im PDF Exchange programmieren Java Basics - Anfänger-Themen 0
D Programmieren nach UML Java Basics - Anfänger-Themen 2
Y Taschenrechner programmieren Java Basics - Anfänger-Themen 3
B Überweisung programmieren Java Basics - Anfänger-Themen 7
bluetrix Programmieren eines Bots für Zahlen-Brettspiel Java Basics - Anfänger-Themen 9
D Ampel Programmieren die jede 10 sekunden ihre farbe wechselt Java Basics - Anfänger-Themen 6
J ArrayList add methode selbst programmieren Java Basics - Anfänger-Themen 10
00111010101 Objektorientiertes Programmieren mit Vererbung (Zahlen in Array verschwinden) Java Basics - Anfänger-Themen 3
thor_norsk Fernseher programmieren mit Java Java Basics - Anfänger-Themen 4
M Jenga Regeln Java Programmieren Java Basics - Anfänger-Themen 1
M Ressourcensparend programmieren Java Basics - Anfänger-Themen 3
brypa Wie Programmieren lernen? Java Basics - Anfänger-Themen 15
G Spielerwechsel programmieren Java Basics - Anfänger-Themen 1
J Solitär (Brettspiel) programmieren Java Basics - Anfänger-Themen 3
H Objektorientiertes Programmieren Java Basics - Anfänger-Themen 4
K 12- Stunden Konverter Programmieren Java Basics - Anfänger-Themen 1
WAB9703-04 Programm zum automatischen Ausfüllen von Formularen programmieren Java Basics - Anfänger-Themen 3
L Zahlenspiel programmieren Java Basics - Anfänger-Themen 1
TimoN11 Automat programmieren Java Basics - Anfänger-Themen 4
G Erste Schritte Array Mittelwert Methode Programmieren Java Basics - Anfänger-Themen 5
ehmo würfelspiel programmieren anfänger Java Basics - Anfänger-Themen 1
N Ufospiel programmieren Java Basics - Anfänger-Themen 13
KogoroMori21 Vorbereitung auf die Programmieren Klausur vom ersten Semester Java Basics - Anfänger-Themen 4
Drinkerbell Erste Schritte Zu blöd zum Programmieren? Java Basics - Anfänger-Themen 9
G Stack programmieren Java Basics - Anfänger-Themen 6
I Brauche Hilfe bei Objektorientiertem programmieren Java Basics - Anfänger-Themen 23
T Auf einem Schachbrett bewegen programmieren Java Basics - Anfänger-Themen 2
G Bruchrechner programmieren Java Basics - Anfänger-Themen 6
G Ufo Spiel programmieren Java Basics - Anfänger-Themen 13
D Schachbrett (8x8) programmieren Java Basics - Anfänger-Themen 3
J Spiel programmieren Java Basics - Anfänger-Themen 16
J Hilfe beim Programmieren Java Basics - Anfänger-Themen 5
S Kreisberechnung3 Buch: Programmieren lernen mit Java von Hans-Peter Habelitz Java Basics - Anfänger-Themen 39
M Quiz in Java programmieren mit Array Java Basics - Anfänger-Themen 8
S Spiel-Programmieren. Wenn ein Objekt den anderen berührt. Java Basics - Anfänger-Themen 6
K Java programmieren Java Basics - Anfänger-Themen 6
V_Fynn03 Kontrolle des Quelltextes (Bank programmieren)(GUI) Java Basics - Anfänger-Themen 6
D Was tun gegen zu komplzierten Denken beim Programmieren Java Basics - Anfänger-Themen 27
V_Fynn03 Bruchrechner programmieren (2 Klassen) Java Basics - Anfänger-Themen 9
N Ticketautomat programmieren Java Basics - Anfänger-Themen 63
M Rechner programmieren Java Basics - Anfänger-Themen 3
V_Fynn03 Java Bruchrechner programmieren Java Basics - Anfänger-Themen 13
J Java Suchfunktion Programmieren Java Basics - Anfänger-Themen 1
L Erste Schritte Bin ich "zu dumm" oder nicht geeignet zum Programmieren? Java Basics - Anfänger-Themen 3
U Ist jemad gut in programmieren (JAVA) und kann mir helfen? Java Basics - Anfänger-Themen 1
H Uhr programmieren Java Basics - Anfänger-Themen 10
T Schalter programmieren Java Basics - Anfänger-Themen 17
S Ampel Programmieren Java Basics - Anfänger-Themen 5
P Erste Schritte Probleme mit dem Programmieren Java Basics - Anfänger-Themen 12
D Richtig für Programmieren an der UNI lernen Java Basics - Anfänger-Themen 8
B Folgende Abfrage dynamisch programmieren? Java Basics - Anfänger-Themen 8
D Beim Programmieren auf die Logisch einfache Lösung kommen. Java Basics - Anfänger-Themen 17
B UML Klassen Diagramm zu Java Code Programmieren und ausführen Java Basics - Anfänger-Themen 21
steven789hjk543 Kann man mit Java und Eclipse einen Virus programmieren? Java Basics - Anfänger-Themen 13
S Spiel programmieren mit Java Java Basics - Anfänger-Themen 11
A Kalender programmieren, ich finde meinen Fehler nicht. Java Basics - Anfänger-Themen 9
S Erste Schritte Hilfe beim lernen von Programmieren Java Basics - Anfänger-Themen 2
V Zeichenkette programmieren Java Basics - Anfänger-Themen 20
O Fenster programmieren Java Basics - Anfänger-Themen 2
R Uebersichtlicher bzw. besser Programmieren Java Basics - Anfänger-Themen 13
N Dynamisches Programmieren/Fibonacci Java Basics - Anfänger-Themen 1
B Spielfiguren für ein Beute-Jägerspiel programmieren Java Basics - Anfänger-Themen 12
A Programmieren lernen Java Basics - Anfänger-Themen 28
F ArrayListe manuell programmieren? Java Basics - Anfänger-Themen 24
X Erste Schritte Einstieg ins Programmieren Java Java Basics - Anfänger-Themen 2
O Erste Schritte ln(1+x) Reihe Programmieren Java Basics - Anfänger-Themen 6
Ellachen55 Weihnachtsbaum in Eclipse programmieren Java Basics - Anfänger-Themen 6
L Klassen Geldrückgabe - Aufgabe Programmieren Java Basics - Anfänger-Themen 23
H Stern Dreieck (Buch: Grundkurs Programmieren) Java Basics - Anfänger-Themen 2
V Variablen Vorkommen programmieren Java Basics - Anfänger-Themen 18
S Dreieckssignal programmieren Java Basics - Anfänger-Themen 5
K Fehler beim Programmieren von TicTacToe Java Basics - Anfänger-Themen 12
M Spiel programmieren Java Basics - Anfänger-Themen 16
A Fenster programmieren Java Basics - Anfänger-Themen 1
V OOP Kassensystem objektorientiert programmieren Java Basics - Anfänger-Themen 15
A Erste Schritte DoodleJump programmieren: Kollisionsabfrage Java Basics - Anfänger-Themen 4
CT9288 Kleine Simulation programmieren, denkanstöße erbeten Java Basics - Anfänger-Themen 19
H Welche IDE zum Buch "Programmieren mit Java" von Reinhard Schiedermeier des Verlags Pearson Studium Java Basics - Anfänger-Themen 19
D Könnt ihr mir helfen beim Programmieren eines Ping Pong Spieles? Java Basics - Anfänger-Themen 9
M Rekursive Methode Programmieren Java Basics - Anfänger-Themen 3
I Spielbrett programmieren: Datenstruktur Java Basics - Anfänger-Themen 3
G Rekursives Programmieren --> harmonische Reihe Java Basics - Anfänger-Themen 3
A Endlich anfangen mit Programmieren ! Java Basics - Anfänger-Themen 8
L Karawane programmieren Java Basics - Anfänger-Themen 0
kokojamboo92 Spiel programmieren Java Basics - Anfänger-Themen 1
E Mastermind programmieren, wie den falschen Platz aber richtige Farbe schecken? Java Basics - Anfänger-Themen 23
steven789hjk543 Erste Schritte java programmieren/ Schritt für Schritt Java Basics - Anfänger-Themen 14
I Spiel programmieren. Java Basics - Anfänger-Themen 16
H [Studium] Mäxchenspiel programmieren Java Basics - Anfänger-Themen 10
C BlueJ Zahlenschloss programmieren Java Basics - Anfänger-Themen 5
steven789hjk543 mit dem Smartphone java programmieren Java Basics - Anfänger-Themen 44
F Okjektorientiert programmieren Java Basics - Anfänger-Themen 2
S OOP Ticketsystem programmieren Java Basics - Anfänger-Themen 6
P Selber Programmieren lernen oder Uni? Java Basics - Anfänger-Themen 12
P Kasse programmieren Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben