Zeichenrätsel lösen

Taso44

Aktives Mitglied
Hallo zusammen,
ich habe folgende Aufgabe zu lösen und komme nicht weiter.
Die Aufgabe erscheint mir schon sehr schwierig. Die Aufgabenstellung stet unten

-----------------------------------------------
Die folgende Art von Zahlenrätsel ist aus Zeitschriften bekannt. Jede Ziffer ist durch ein Symbol ersetzt worden, dabei stehen gleiche Symbole immer fur gleiche Ziffern:

stern rampe raute + herz rampe dreieck = dreieck quadrat quadrat
- - -
herz dreeck auge + quadrat quadrat stern = kleeblatt quadrat sonnenrad
= = =
raute rampe sonnenrad + quadrat dreieck herz = herz dreick kreis

Ihre Aufgabe ist, herauszufinden, welches Symbol welche Ziffer repr¨asentiert. Erstellen Sie dazu eine JavaKlasse Rechner, mit einer main-Methode, in der Sie eine Variable pro Symbol vereinbaren. Uberlegen Sie, ¨ wie Sie die Gleichungen geeignet in Java repr¨asentieren und verwenden.
--------------------------------------
Wie kann ich denn das Programm dazu bringen etwas herauszufinden was ich selber noch nicht weiß?
ich habe zuerst alle Zeichen miteinander in forschleifen geschachelt. Außerdem habe ich auch ein 2DArray erstellt mit 3*3 Felder, aber ich
komme leider nicht mit der Lösung weiter.
Hätte da vielleicht jmd ne Idee?
Danke und Gruß, Taso44

PS: Die Minuse und die = Zeichen verschieben sich leider nach links beim Ausgeben sollen aber auch zur rechnung beitragen
 

Jw456

Top Contributor
Frage die drei Aufgaben gehören die zusammen oder sind die Einzel denn es sind mehr als 10 Zeichen.
In jeder Aufgabe sind es 7 Zeichen

Zusammen sind es 12 Zeichen wobei das "dreeck" bestimmt ein Tippfehler ist und "dreieck" ist

12 Zeichen wir haben doch nur 10 0-9 ?

Frage ist es möglich das eine Ziffer zwei Zeichen estspricht.
 

temi

Top Contributor
Als Tipp: Unterteile die Aufgabe in kleinere Probleme. Du musst z. B. aus drei Symbolen eine Dezimalzahl erzeugen, mit der du rechnen kannst. Dafür bietet sich eine separate Methode mit drei Parametern an.
 

Oneixee5

Top Contributor
Die Minuse und die = Zeichen verschieben sich leider nach links beim Ausgeben sollen aber auch zur rechnung beitragen
Etwa so?
Code:
stern rampe raute     + herz rampe dreieck    = dreieck quadrat quadrat
       -                        -                        -
herz dreeck auge      + quadrat quadrat stern = kleeblatt quadrat sonnenrad
       =                        =                        =
raute rampe sonnenrad + quadrat dreieck herz   = herz dreick kreis
 

Taso44

Aktives Mitglied
Frage die drei Aufgaben gehören die zusammen oder sind die Einzel denn es sind mehr als 10 Zeichen.
In jeder Aufgabe sind es 7 Zeichen

Zusammen sind es 12 Zeichen wobei das "dreeck" bestimmt ein Tippfehler ist und "dreieck" ist

12 Zeichen wir haben doch nur 10 0-9 ?

Frage ist es möglich das eine Ziffer zwei Zeichen estspricht.
Nein, also es ist wie folgt gedacht: xxx + xxx = xxx, also , z.B. 213+484=697
und nein ein Zeichen kann nur eine Ziffer sein
 

M.L.

Top Contributor
Vom Durchprobieren mal abgesehen kann man aus der Struktur ein paar Maximal- oder Minimalwerte für die einzelnen Symbole herleiten. (1. Spalte, nur die Hunderter): Stern ist (min) 3, Herz (min) 2, Raute (min) 1 und (max) 7 (1.Zeile, nur die Hunderter): Stern wie eben (min) 3, Stern + Herz <= 9 usw...
 

temi

Top Contributor
naja ich versuch gerade einfach jedem Zeichen eine Zahl zuzuordnen und zu gucken ob das Ergebnis passend ist
weis nur nicht, ob das so irgendwie sinn macht (wenn man die Aufgabe berücksichtigt)
Jaaa schon, aber eigentlich soll dein Programm jedem Zeichen eine Zahl zuordnen und gucken, ob das Ergebnis passend ist.
 

mihe7

Top Contributor
So, jetzt mal mit Spaß an der Sache... Ich benenne die Symbole mal um, da mir das zu blöd zu schreiben ist.

1. Gleichung: abc + dbf = fgg
aus
100(a+d) + 10(2b) + c+f = 100f + 10g + g
folgt:
  1. a+d < 10
  2. g = (c+f) % 10
  3. g = (2b + (c+f)/10) % 10
  4. g != 0
    Wäre g = 0, dann müsste c+f = 0 oder c+f=10 gelten.
    c+f = 0 scheidet aus, da dann c und f jeweils gleich 0 sein müssten.
    c+f = 10 würde zu einem Übertrag führen, so dass g = 2b+1 != 0 ist.
  5. f != 0
    Wäre f = 0, dann müsste a = d = 0 gelten.
2. Gleichung: dfh + gga = igj

100(d+g) + 10f + 10g + h+a = 100i + 10g + j
<=> 100(d+g) + 10f + h+a = 100i + j

Es folgt
  1. j = (h+a) % 10
  2. (10f + h+a) % 100 < 10, d.h. f = 0 oder f = 9, mit 1.5 folgt f = 9
3. Gleichung: cbj + gfd = dfk

100(c+g) + 10(b+f) + j+d = 100d + 10f + k
<=> 100(c+g) + 10b + j+d = 100d + k

Es folgt
  1. k = (j+d) % 10
  2. (10b + j+d) % 100 < 10, d. h. b = 0 oder b = 9. Da nach 2.2 f = 9 gilt, muss b = 0 sein.
4. Schritt
Wir wissen jetzt, dass g != 0, b = 0 und f = 9 gilt. Eingesetzt in die erste Gleichung liefert das

100(a+d) + c+9 = 100f + 10g + g

woraus folgt
  1. f = a+d
  2. c = 2, da g != 0 und c+9 = 11 = 10g + g
  3. und damit g = 1
5. Schritt
Wir wissen jetzt, dass b = 0, g = 1, c = 2 und f = 9 gilt. Eingesetzt in die dritte Gleichung liefert das

300 + j+d = 100d + k

woraus folgt
  1. d = 3
  2. k = j+3
  3. f = a+d <=> a = f-d = 6
6. Schritt
Wir wissen jetzt, dass b = 0, g = 1, c = 2, d = 3, a=6, f = 9 gilt. Eingesetzt in die zweite Gleichung liefert das

490 + h+6 = 100i + j

Es folgt:
  1. i = 5
    Es muss (490 + h+6) % 100 < 10 sein.
    Das ist nur möglich, wenn h+6 >= 10.
    Dann ist 500 <= 490 + h+6 < 510 und somit i = 5
7. Schritt
Wir wissen jetzt, dass b = 0, g = 1, c = 2, d = 3, i = 5, a = 6, f = 9 gilt.

Verbleiben die Ziffern 4, 7 und 8.

  1. Aus 5.2 wissen wir, dass k = j+3 gilt. Damit kann nur j = 4 und k = 7 gelten.
  2. Für h muss demnach h = 8 gelten.
8. Überprüfung
Wir wissen jetzt, dass b = 0, g = 1, c = 2, d = 3, j = 4, i = 5, a = 6, k = 7, h = 8, f = 9 gilt.
Code:
abc + dbf = fgg
 -     -     -
dfh + gga = igj
 =     =     =
cbj + gfd = dfk

Code:
602 + 309 = 911
 -     -     -
398 + 116 = 514
 =     =     =
204 + 193 = 397
Würde sagen: passt :)
 

Ähnliche Java Themen

Neue Themen


Oben