Übung 6, Aufgabe 7 - Metainterpreter

saba
Windoof-User
Windoof-User
Beiträge: 36
Registriert: 17. Jan 2007 19:58

Beitrag von saba » 9. Dez 2007 23:03

s!mon hat geschrieben:Alles was du in alternate ausrechnest macht deine Funkion sehr langsam. Du musst überlegen, wie du alles ifs oder abs da rausbekommst
meinst du filter funktion muss man ohne if implementieren

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

Beitrag von Osterlaus » 9. Dez 2007 23:04

Ich habs mit modulo gelöst.

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

Beitrag von Osterlaus » 9. Dez 2007 23:05

saba hat geschrieben:
s!mon hat geschrieben:Alles was du in alternate ausrechnest macht deine Funkion sehr langsam. Du musst überlegen, wie du alles ifs oder abs da rausbekommst
meinst du filter funktion muss man ohne if implementieren
Ne, ich glaube, er meint shcon die alternate-nat-Erzeugung. filter ohne if wirste nicht schaffen ;)

saba
Windoof-User
Windoof-User
Beiträge: 36
Registriert: 17. Jan 2007 19:58

Beitrag von saba » 9. Dez 2007 23:09

aber meine alterate-nat habe ich durch aufruf einer anderen rekursiven funktion ,in dem ich kein if sondern abs benutzt habe ,gemacht..
so (define alterate-nat (produce-stream 1))

Pathfinder
Erstie
Erstie
Beiträge: 15
Registriert: 5. Nov 2006 15:45

Beitrag von Pathfinder » 9. Dez 2007 23:15

ja, ich hab es genauso wie nat und nst gemacht, nur alternierend...
d.h. alternat-nat ruft alternate-nst auf...
alternate-nst ist die eigentliche Prozedur, die alles berechnet...

saba
Windoof-User
Windoof-User
Beiträge: 36
Registriert: 17. Jan 2007 19:58

Beitrag von saba » 9. Dez 2007 23:23

wenn ich diese aufruf (my->cons 10 alterate-nat) habe
dann bekomme ich in weniger als eine minute die antwort (dh glaube ich dass die alterate-nat richtig sein sollte)
aber wenn ich filter dabei verwende,so (my->cons 10 (filter pos? alterate-nat))
soll ich evig warten :?:

liegt das problem vielleicht an filter? (mein filter funktion sieht fast wie filter funktion in T5)

Pathfinder
Erstie
Erstie
Beiträge: 15
Registriert: 5. Nov 2006 15:45

Beitrag von Pathfinder » 9. Dez 2007 23:30

@saba: Wenn Du (my->cons 10 (filter pos? nat)) (also nur nat statt alternate-nat) machst, dann funktioniert es sehr gut, richtig?
Wenn ja, dann liegts irgendwie an alternate-nat...

Denn dasselbe Problem habe ich auch...

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

Beitrag von Stumpf.Alex » 9. Dez 2007 23:31

Was hast du denn für einen Rechner?

(my->cons 10 alterate-nat) braucht bei mir ein paar Sekunden.

Wenn du den Filter durchlaufen lässt ist ja klar das der ewig länger braucht, denn er muss für jedes Element der Größe n, n rekursive Aufrufe machen. Etwa n! Aufrufe oder so...keine Ahnung. Das wäre aber dann O(n^2) und damit rechenintensiv.

Pathfinder
Erstie
Erstie
Beiträge: 15
Registriert: 5. Nov 2006 15:45

Beitrag von Pathfinder » 9. Dez 2007 23:37

Stumpf.Alex hat geschrieben:Was hast du denn für einen Rechner?
Ich persönlich hab einen Intel Core 2 Duo T7600 Prozessor (neuer Laptop)...Insofern sollte es schon schnell gehen...
Hab jetzt mal meine alternate-nat-Prozedur mit einem if-clause gelöst und nun funktioniert (my->cons 10 (filter pos? alterate-nat)) innerhalb von 10Sek.

Manchmal scheint wohl die mathematische Lösung nicht immer die beste Lösung zu sein :wink:

saba
Windoof-User
Windoof-User
Beiträge: 36
Registriert: 17. Jan 2007 19:58

Beitrag von saba » 9. Dez 2007 23:49

Pathfinder hat geschrieben:@saba: Wenn Du (my->cons 10 (filter pos? nat)) (also nur nat statt alternate-nat) machst, dann funktioniert es sehr gut, richtig?
Wenn ja, dann liegts irgendwie an alternate-nat...

Denn dasselbe Problem habe ich auch...
ja wenn ich nat statt alterate-nat benutze ,funktionier schnell..
ich habe meine alterate-nat ganz unabhängig von nat implementieren,
soll man vielleicht alternate nat mit hilfe von nat implementieren ??

und andere Frage , braucht man überhaupt irgendwelche my-map funktion ??
Zuletzt geändert von saba am 9. Dez 2007 23:50, insgesamt 2-mal geändert.

Pathfinder
Erstie
Erstie
Beiträge: 15
Registriert: 5. Nov 2006 15:45

Beitrag von Pathfinder » 9. Dez 2007 23:50

saba hat geschrieben:ja wenn ich nat statt alterate-nat benutze ,funktionier schnell..
ich habe meine alterate-nat ganz unabhängig von nat implementieren,
soll man vielleicht alternate nat mit hilfe von nat implementieren ??
Nein...Versuch es mal mit einem if...Dann sollte es schneller gehen ;)

saba
Windoof-User
Windoof-User
Beiträge: 36
Registriert: 17. Jan 2007 19:58

Beitrag von saba » 9. Dez 2007 23:56

mein alterate-nat sieht fast wie nst im template (rekursive)

(define nst (lambda (n) (my-cons n (nst (+ n 1)))))

meinst du soll ich mein alterate-nat nicht rekursiv ,sondern irgendwie mit if implementieren?

Pathfinder
Erstie
Erstie
Beiträge: 15
Registriert: 5. Nov 2006 15:45

Beitrag von Pathfinder » 10. Dez 2007 00:02

So oder so ist es rekursiv, da es ein Stream ist...
Ich meinte nur folgendes:

Ich hatte dasselbe Problem, wie Du...Ich hatte alternate-nat rein mathematisch gelöst, sodass ich lediglich eine Rekursion gebraucht hatte und sonst nix.
Danach habe ich es mit einem if (wenn n < 0, dann blabla, andernfalls blabla) versucht, und habe die mathematische Formel fallen lassen, da diese wohl zu rechenintensiv war.
Daher sage ich ja, versuchs auch mal so...Evtl. ist es bei Dir genauso...

saba
Windoof-User
Windoof-User
Beiträge: 36
Registriert: 17. Jan 2007 19:58

Beitrag von saba » 10. Dez 2007 00:11

diese if (wenn n<0 .. hast du für alterate-nat benutzt oder für dein filter ?

Benutzeravatar
Krümelmonster
Geek
Geek
Beiträge: 767
Registriert: 17. Okt 2007 13:58
Wohnort: Jossgrund

Beitrag von Krümelmonster » 10. Dez 2007 00:20

Kai hat übrigens den Eingang
der Übung bestätigt.
Stell deinen Fuß auf einen hohen Sockel
Mach dir ein Haar aus tausend Locken
Du bleibst doch immer, was du bist!

Antworten

Zurück zu „Archiv“