Übung 6, Aufgabe 7 - Metainterpreter

Benutzeravatar
MelonTropic
Windoof-User
Windoof-User
Beiträge: 26
Registriert: 6. Dez 2007 12:55

Beitrag von MelonTropic » 6. Dez 2007 13:03

Was mach ich falsch, wenn meine Ausgabe zu lange dauert?

ChRiZz88
Mausschubser
Mausschubser
Beiträge: 87
Registriert: 7. Nov 2007 18:09
Kontaktdaten:

Beitrag von ChRiZz88 » 6. Dez 2007 13:15

Nix, dauert eben so lange.. Bei mir dauern 5 Filter-Tests ca. 49 Sekunden^^

Benutzeravatar
MelonTropic
Windoof-User
Windoof-User
Beiträge: 26
Registriert: 6. Dez 2007 12:55

Beitrag von MelonTropic » 6. Dez 2007 13:21

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?

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von Stumpf.Alex » 6. Dez 2007 14:07

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.

Benutzeravatar
MelonTropic
Windoof-User
Windoof-User
Beiträge: 26
Registriert: 6. Dez 2007 12:55

Beitrag von MelonTropic » 6. Dez 2007 14:34

Mein Tutor meint, die Musterlösung wird in ca 20sek berechnet.

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von Stumpf.Alex » 6. Dez 2007 14:57

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.

Benutzeravatar
MelonTropic
Windoof-User
Windoof-User
Beiträge: 26
Registriert: 6. Dez 2007 12:55

Beitrag von MelonTropic » 6. Dez 2007 15:52

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.

Osterlaus
BSc Spammer
BSc Spammer
Beiträge: 1263
Registriert: 23. Aug 2007 12:46
Wohnort: DA

Beitrag von Osterlaus » 6. Dez 2007 15:57

Magst du auf dieses Problem vielleicht noch ein bisschen eingehen? Bei mir dauerts auch lang, ich wüsste aber nicht, wie mans beschleunigen kann...

Benutzeravatar
MelonTropic
Windoof-User
Windoof-User
Beiträge: 26
Registriert: 6. Dez 2007 12:55

Beitrag von MelonTropic » 6. Dez 2007 16:03

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.

Benutzeravatar
R|ng0
Mausschubser
Mausschubser
Beiträge: 71
Registriert: 24. Dez 2006 19:17

Beitrag von R|ng0 » 6. Dez 2007 18:47

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!

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von Stumpf.Alex » 6. Dez 2007 22:23

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 ^^.

#14
Mausschubser
Mausschubser
Beiträge: 80
Registriert: 7. Dez 2007 13:54
Wohnort: Darmstadt

Beitrag von #14 » 7. Dez 2007 14:08

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?

jül
Mausschubser
Mausschubser
Beiträge: 85
Registriert: 30. Okt 2007 01:21
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von jül » 7. Dez 2007 14:49

Die Lösung hast du doch bereits selbst gegeben. Steht irgendwo in der Aufgabe, dass deiner Lösung eine besondere Ästhetik abverlangt wird? ;)
Test my convictions, they'll run you through!

#14
Mausschubser
Mausschubser
Beiträge: 80
Registriert: 7. Dez 2007 13:54
Wohnort: Darmstadt

Beitrag von #14 » 7. Dez 2007 16:35

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...

Stumpf.Alex
Nerd
Nerd
Beiträge: 643
Registriert: 1. Okt 2007 12:40
Wohnort: Darmstadt
Kontaktdaten:

Beitrag von Stumpf.Alex » 7. Dez 2007 17:47

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?

Antworten

Zurück zu „Archiv“