Symbo Rätsel lösen lassen

LeeSin

Mitglied
Ich wünsche einen guten Morgen!

ich stehe aktuell leider total auf dem Schlauch bei einer Aufgabe die ich programmieren möchte. Und zwar geht es um ein Zahlenrätsel (symbolrätsel) in welchem ich mit jedem Symbol eine variable zuordnen soll. Dieses Rätsel soll dann numerisch gelöst werden in dem ich alle möglichen Werte ausprobiere bis alle Gleichungen erfüllt sind. Das Ergebnis sei eindeutig und es gibt nur eine konkrete Lösung.

12725

Also muss ich mir jetzt Gleichungen überlegen? Ich verstehe nicht ganz wie das gemeint ist mit dem ausprobieren um auf eine Lösung zu kommen.

Meine überlegung: Also jedes Symbol repräsentiert ja eine "Zahl" ich habe 10 symbole sprich 10 zahlen? Dann gebe ich beispielsweise namen:
star,triangle,diamond etc.
und wenn ich diese als Gleichungen schreibe dann z.b. -> 1. Zeile (star triangle diamond ) + (heart triangle wrongDelta) = (wrongDelta square square)

irgendwie verwirrt mich die Aufgabe sehr. Ich freue mich über jegliche Unterstützung 🙂!

Liebe Grüße
 
Ich verstehe nicht ganz wie das gemeint ist mit dem ausprobieren um auf eine Lösung zu kommen.

So wie du schon geschrieben hast: Du setzt für jedes Symbol eine Ziffer von 0 - 9 ein und rechnest damit. Das machst du systematisch, bis alle Zifferkombinationen getestet oder die Lösung gefunden ist.

wenn ich diese als Gleichungen schreibe dann z.b. -> 1. Zeile (star triangle diamond ) + (heart triangle wrongDelta) = (wrongDelta square square)

Das geht natürlich nicht ganz so einfach. Jede Ziffer hat ja eine Wertigkeit im dezimalen System. "star triangle diamond" entspricht dem Zahlenwert star * 100 + triangle * 10 + diamond.

Geschickt wäre es natürlich, sich diesen Wert in einer separaten Methode zu berechnen, damit alles etwas übersichtlicher wird:
valueOf(star, triangle, diamond) + valueOf(heart, triangle, wrongDelta)

Im Prinzip musst du "nur" die oben gezeigten Gleichungen mit den Symbolvariablen aufstellen und anschließend die Symbolvariablen systematisch mit den entsprechenden Ziffern besetzen.
 
Zuletzt bearbeitet:
Im Prinzip musst du "nur" die oben gezeigten Gleichungen mit den Symbolvariablen aufstellen und anschließend die Symbolvariablen systematisch mit den entsprechenden Ziffern besetzen.

Um diese Durchläufe (brute force) zu verringern, kann man noch ein paar Constraints ergänzen. Es ist z.B. klar, Herz und Stern beide kleiner sind als das Dreieck nach unten zeigend. Herz und Stern sind beide kleiner als Kleeblatt. Raute und Quadrat sind beide kleiner als Herz. Raute und Herz sind beide kleiner als Dreieck nach unten zeigend. Herz und Raute sind kleiner als Stern. Das kommt aus den 100er Zeichen bei den Additionen/Subtraktionen heraus. Außerdem ist Herz entweder 2x Quadrat oder 2x Quadrat +1 (mittlere Spalte)
 
Vielen Dank an euch für die Antworten 🙂 !

Hat mir sehr weiter geholfen, auch danke für den Optimierungstipp dadurch wurde es auf jeden Fall nochmal übersichtlicher. Code funktioniert jetzt.

Liebe Grüße!!
 

Zurück
Oben