Seite 3 von 7

Verfasst: 6. Dez 2007 13:03
von MelonTropic
Was mach ich falsch, wenn meine Ausgabe zu lange dauert?

Verfasst: 6. Dez 2007 13:15
von ChRiZz88
Nix, dauert eben so lange.. Bei mir dauern 5 Filter-Tests ca. 49 Sekunden^^

Verfasst: 6. Dez 2007 13:21
von MelonTropic
ich brauch für folgende Ausgabe:

Code: Alles auswählen

(list
 (list 1 2 3 4 5)
 (list 1 2 3 4 5 6 7 8 9 10)
 "filter alterate"
 (list -2 -4 -6 -8 -10)
 (list 1 3 5 7 9)
 "filter natural"
 empty
 (list 1 2 3 4 5))
ca 40 Sekunden. Wenn ich die geforderte Liste mit je 10 Elementen generieren will, hört er nicht mehr auf zurechnen. Wo kann mein Fehler liegen?

Verfasst: 6. Dez 2007 14:07
von Stumpf.Alex
Naja...die Komplexität liegt glaube ich ca. bei 2^n. Dementsprechend rattert dein Rechner bei 10 Elementen mehr herum. Also wenn dein Stream mit 5 Elementen funktioniert, dann sollte es auch mit 10 Elementen klappten.

Also um alle filter Aufgaben auf einmal zu berechen, dauert dass schon ein paar Minuten, je nach Rechner.

Verfasst: 6. Dez 2007 14:34
von MelonTropic
Mein Tutor meint, die Musterlösung wird in ca 20sek berechnet.

Verfasst: 6. Dez 2007 14:57
von Stumpf.Alex
Prozessorabhängig :wink: . Mein Lappi (recht neuer) schafft dass auch in knapp einer Minute während mein alter PC (2400+ GHz) mehrere Minuten daran rum rechnet.

Verfasst: 6. Dez 2007 15:52
von MelonTropic
Hättest mich fast überzeugt Alex ;)
Komm gerade aus der Sprechstunde, hab dort erfahren woran es liegt.

Es lag an meiner Implementierung des Datenstroms. Hatte zwar nur abs und eine if-abfrage drin, hat aber gereicht um meinen Rechner (1,6Ghz) in die Knie zu zwingen.

Verfasst: 6. Dez 2007 15:57
von Osterlaus
Magst du auf dieses Problem vielleicht noch ein bisschen eingehen? Bei mir dauerts auch lang, ich wüsste aber nicht, wie mans beschleunigen kann...

Verfasst: 6. Dez 2007 16:03
von MelonTropic
anscheind entlastet es den Rechner wenn man den Metainterpreter nur mit my-cons füttert.

so ganz grob: cons x cons x+1 func x+2

ansonsten schreib mal ne private message.

Verfasst: 6. Dez 2007 18:47
von R|ng0
Stumpf.Alex hat geschrieben:Hmm..also es wird nirgends ein Vertrag oder Tests gefordert, also würde ich sagen nein. Es wird nur gefordert, dass du deinen Code kommentierst. Und bei den Tests.... naja, wird auch nicht gefordert und falls du es vor hast...viel Spaß! :wink:

Auch wenn es nicht explizit gefordert ist, müsst ihr für jede eurer Funktionen Vertrag/Beschreibung/Beispiel und Tests angeben, andernfalls kann es zum Punktabzug führen!

Verfasst: 6. Dez 2007 22:23
von Stumpf.Alex
Rofl! Hab meine alterate-nat nochmal anders implementiert und nun gehts wirklich wesentlich flotter (knapp 30s)! Hatte ja auch vorher einfach den Stream natürlicher Zahlen durch ein selbstdefiniertes my-map gejagt. Kein Wunder dass das so lange gebraucht hat ^^.

Verfasst: 7. Dez 2007 14:08
von #14
hey... ich hab auch mal eine frage, bzw ein problem...
also an sich funktioniert meine filter funktion...zumindest solange ein ergebnis zurueckgegeben wird... sobald sie aber mit einer endlichen liste aufgerufen wird, in der kein element den auswahlkriterien entspricht (also die suche nach negativen zahlen in alon, welche aus 1-5 besteht) bricht scheme ab:
eval-var: Unbound variable: 'pos-filter-stream
wobei pos-filter-stream ein stream ist, der durchaus definiert wurde.
das passiert, wenn ich in meiner filter-funktion im falle des list=empty ein (empty) zureuckgebe. setze ich anstelle dessen ein (my-cons (empty) (empty)), dann ist das zwar nicht schoen, sorgt aber zumindest dafuer, dass das programm nicht abbricht und eine liste mit einer leeren liste zurueckgibt...

hat jemand eine idee, wie man das loesen kann?

Verfasst: 7. Dez 2007 14:49
von jül
Die Lösung hast du doch bereits selbst gegeben. Steht irgendwo in der Aufgabe, dass deiner Lösung eine besondere Ästhetik abverlangt wird? ;)

Verfasst: 7. Dez 2007 16:35
von #14
falls du mit der loesung ein (empty) meinst... es geht nicht. ich weiss nicht mehr, wonach ich suchen soll. und ein (my-cons (empty) (empty)) ist nicht das gleich wie ein empty...

Verfasst: 7. Dez 2007 17:47
von Stumpf.Alex
Hmmm...also bei mir geht ein einzelnes (empty) als Rückgabe für eine leere Liste bei filter. Benutzt du das richtige Template, in dem der Interpreter für empty modifiziert ist?