Verfasst am: 09.06.2010, 22:01
Titel: Zahlenkombination mit for Schleifen ermitteln
Hi Leute,
ich bin am verzweifeln. Tüftel schon mehrere Abende und verliere langsam aber sicher die Lust. Kann mir bitte jemand sagen, warum ich folgendes "Problem" nicht lösen kann?
Aufgabe:
Ein finanziell anspruchsvoller Student braucht dringend Geld und schreibt seinem Vater ein E-Mail mit dem Text send more money. Sein Vater gibt ihm mehr Geld, wenn er die Rechenaufgabe
s e n d
+ m o r e
m o n e y
lösen kann. Jedem Buchstaben muss eine andere Ziffer entsprechen und die Summe muss stimmen. Helfen Sie dem verarmten Studenten und schreiben Sie ihm ein Matlab-Skript.
Mein Lösungsversuch ist folgender:
Code:
a = [0000]; %"send"
b = [1000]; %"more", wobei m 1 sein muss
c = [0000]; %"money", wobei die 1 für das m gleich weggelassen wird
for ca=0 : +1 : 9, %Alle nötigen c - Kombinationen Anfang
c(1) = ca;
b(2) = c(1);
forcd=0 : +1 : 9,
c(4) = cd; %Alle nötigen c - Kombinationen Ende
for bc=0 : +1 : 9, %Alle nötigen b - Kombinationen Anfang
b(3) = bc; %Alle nötigen b - Kombinationen Ende
for aa=0 : +1 : 9, %Alle nötigen a - Kombinationen Anfang
a(1) = aa;
for ab=0 : +1 : 9,
a(2) = ab;
b(4) = a(2);
c(3) = a(2);
for ac=0 : +1 : 9,
a(3) = ac;
c(2) = a(3);
for ad=0 : +1 : 9,
a(4) = ad;
d = a + b; %Alle a - Kombinationen Ende
ifisequal(d,c)
a
b
c
break;
end end end end end end end end
1) mach es dir doch etwas einfacher , verwende als Laufindizien die Buchstabennamen.
2) Die Ziffern für bestimmte Buchstaben müssen unterschiedlich sein,
sonst kriegst du viele Lösungen
3) Überträge muss du auch berücksichtigen
4)
Code:
d = a + b; %Alle a - Kombinationen Ende
ifisequal(d,c) end
Die Bedingung kann doch so nie stimmen, da hast du die Aufgabe noch nicht verstanden, da kriegst doch etwas zufällig generiertes, aber der Aufgabestellung nicht entsprechend
Puh, danke für die schnelle Antwort!
Echt cooles Programm! Aber mit den Funktionen steig ich noch nicht so ganz durch... Werds mir morgen nochmal in Ruhe anschauen. Hattest du den Code schon oder hast du den einfach so auf die schnelle hingezaubert? Echt super! Hut ab! Kannst du mir vielleicht genauer sagen, wo mein Denkfehler im Grundverständnis der Aufgabe liegt? Komm nicht drauf, was du genau meinst. Danke!
"MatLapexperte&quo
Gast
Beiträge: ---
Anmeldedatum: ---
Wohnort: ---
Version: ---
Verfasst am: 10.06.2010, 23:10
Titel:
Sorry, mit den Funktionen, des scheint mir sehr kompliziert, wenn man sie nicht kennt. Das ganze muss doch einfacher zu lösen sein? Hab folgendes ausprobiert. Gibt aber gar nichts aus. Denke ich habe die Aufgabe jetzt richtig verstanden und das Programm folgendermaßen angepasst:
Hallo
Also deine Bedingung stimmt noch nicht, schreib dir auf Papier was
du alles berücksichtigen muss. Dann wird es einfacher zu implementieren
1) z.B (s + m) == o , was wenn Summe ergibt 10 ==> 10 ist ungleich 0
du muss bedenken dass du nicht Zahlen vergleichst sondern Ziffern und Ziffern sind zw. 0 und 9 also muss du was machen? Richtig Modulo
2) wenn summe ergibt 10 was muss du noch machen, du muss Übertrag berücksichtigen auf nächste Ziffer
Code:
% diese 2 Bedienungen sind in diesem Ausdruck versteckt mod(s+m+floor((e+o)/10),10) == o
Du kannst Beiträge in dieses Forum schreiben. Du kannst auf Beiträge in diesem Forum antworten. Du kannst deine Beiträge in diesem Forum nicht bearbeiten. Du kannst deine Beiträge in diesem Forum nicht löschen. Du kannst an Umfragen in diesem Forum nicht mitmachen. Du kannst Dateien in diesem Forum posten Du kannst Dateien in diesem Forum herunterladen
MATLAB, Simulink, Stateflow, Handle Graphics, Real-Time Workshop, SimBiology, SimHydraulics, SimEvents, and xPC TargetBox are registered trademarks and The MathWorks, the L-shaped membrane logo, and Embedded MATLAB are trademarks of The MathWorks, Inc.