Beleg WS99/SS00, Studium, Home
Diese "langweiligste" der 8 Aufgaben sollte meiner Meinung nach als eine Herausforderung angesehen werden, einen möglichst effizienten Algorithmus zur Lösung der Problemstellung zu entwickeln. Hier ist meine Lösung, zu sehen ist ja nicht viel :-)
Im Textfeld Zahlen werden die Zahlen durch Leerzeichen getrennt
in der Reihenfolge eingegeben, in der sie in der Formel vorkommen sollen.
Das Textfeld Summe enthält den gewünschten Wert des Terms.
Wenn Mit DIV aktiviert ist, wird auch die Division als Operation
verwendet, sonst nur Addition, Subtraktion und Muktiplikation (bei
deaktivierter Checkbox ist die Geschwindigkeit deutlich höher).
Beim Klick auf Berechnen wird eine neue Lösung der Aufgabe
gesucht. Im Textfeld Loesung wird "working..." angezeigt, solange
die Berechnung läuft. Sie kann jederzeit mit einem erneuten
Klick auf Berechnen gestoppt werden. Wenn die Berechnung fertig
ist, wird die gefundene Lösung angezeigt. Wurde keine gefunden oder
die Berechnung abgebrochen, wird nur ein "-" angezeigt.
Wenn nur die Summe verändert wird, also die Zahlen
und Mit DIV unverändert sind, führt ein Klick auf Neue
Summe dazu, dass mit den bereits berechneten Werten ein Term für
die neue Summe angezeigt wird. Wurden die Zahlen oder Mit DIV
verändert oder liegen keine Berechnungsergebnisse vor, wird eine neue
Berechung gestartet. (Diese Option habe ich eingebaut, weil das Programm
bei einem Durchlauf einen Term für jede mögliche Summe ermittelt
und dann die gewünschte auswählt.)
Berechnen führt in jedem Fall eine neue Berechnung durch.
Es wird von allen möglichen Lösungen nur eine zufällig
ausgewählte ermittelt, das bedeutet, bei wiederholten
Rechendurchläufen können verschiedene Lösungsterme
ausgegeben werden.
Meine bisherigen Lösungen zur Beispielaufgabe
(1 2 3 4 5 6 7 8 9 -- 2000) sind
hier aufgelistet. Auf meinem
Rechner zuhause braucht das Applet fuer das Beispiel eine Minute
(in Netscape), bzw. eine halbe Minute (im Appletviewer und im Internet
Exploder).
Source GleichungApplet.java Das Applet GleichungValues.java Berechnung des gesuchten Terms GleichungBaum.java Baum zur Darstellung eines Terms Perm.java Methoden zur Bestimmung von Permutationen Source (9kb) Kompiliert (10kb) |