5. Hausübung- frequency

Ondori
Mausschubser
Mausschubser
Beiträge: 89
Registriert: 28. Okt 2006 19:50

5. Hausübung- frequency

Beitrag von Ondori »

okay, die Aufgabe ist so gestellt, als hätte jemand dabei etwas Bestimmtes im Sinn gehabt, deshalb meine Frage:

Wie geht man am besten an diese Aufgabe heran?
Fängt man an, die Ergebnisliste zu erstellen, geht dann den Vektor genau einmal durch und addiert pro gleichem Element eins zur gespeicherten Anzahl (habe es erst einmal so gemacht)?
Oder geht man für jedes Element den Vektor einmal durch und zählt gleiche Elemente?
Oder gibt es eine andere Möglichkeit, die viel einfacher ist und an die ich mal wieder nicht gedacht habe ;) ?

Vielen Dank für eure Ideen

Benutzeravatar
MisterD123
Geek
Geek
Beiträge: 811
Registriert: 31. Okt 2006 20:04
Wohnort: Weiterstadt

Beitrag von MisterD123 »

such dir das aus was dir besser gefällt, ich habe auch die erste variante genommen weil die zweite einfach dreimal umständlicher zu realisieren ist.. Ist mMn die bessere Variante.

ShabbY
Windoof-User
Windoof-User
Beiträge: 28
Registriert: 25. Okt 2005 11:14
Wohnort: Walldorf
Kontaktdaten:

Beitrag von ShabbY »

Habe auch die erste Variante verwendet.
btw: ist die Reihenfolge in der Ergebnissliste relevant ? für die funktion ist es meines Erachtens nach Trivial, aber so wie ich meinen Tutor einschätze drückt er mir da wieder ordentlich Fehlerpunkte rein.

bsp.
(list (make-freq 'A 2) (make-freq (vector 'A 'B 'C) 1) (make-freq 5 2)) <- meine ausgabe
(list (make-freq (vector 'A 'B 'C) 1) (make-freq 'A 2) (make-freq 5 2)) <- beispiel

mfg Sascha
bomberman > all

Benutzeravatar
Maradatscha
Computerversteher
Computerversteher
Beiträge: 353
Registriert: 2. Okt 2006 18:53

Beitrag von Maradatscha »

im sample von der page steht doch dass es egal ist, das ist doch mit arbitrary gemeint

banshee
Nerd
Nerd
Beiträge: 684
Registriert: 22. Okt 2006 18:46

Beitrag von banshee »

nur mal so ne frage weil ichs irgendwie nicht glauben kann: man braucht schon 2 akkumulatoren oder?

einen für das element das man grade im vektor sucht und einen für die anzahl, wie oft es schon gefunden wurde hätte ich jetzt gesagt...

ShabbY
Windoof-User
Windoof-User
Beiträge: 28
Registriert: 25. Okt 2005 11:14
Wohnort: Walldorf
Kontaktdaten:

Beitrag von ShabbY »

thx @ Maradatscha, genau das wollt ich hören :>
yo, also ich hab es zumindest mit 2 akku's gelöst. gibt aber bestimmt auch ne möglichkeit das mit so vordefinierten funktionen wie foldr auf die reihe zu bekommen, aber auch die arbeiten wieder mit akkus :>
bomberman > all

Christoph B
Computerversteher
Computerversteher
Beiträge: 370
Registriert: 15. Okt 2006 18:28
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Christoph B »

und alle brav ohne rekursion gelöst? :D

Benutzeravatar
MisterD123
Geek
Geek
Beiträge: 811
Registriert: 31. Okt 2006 20:04
Wohnort: Weiterstadt

Beitrag von MisterD123 »

iteration musst du in scheme auch durch rekursion lösen, es sei denn du prügelst dich mit set! durch und das ist denk ich wohl kaum verlangt >.>

Drudge
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 158
Registriert: 13. Apr 2004 20:17

Beitrag von Drudge »

Mal ne Frage: Kopiert ihr die Objekte des Vektors auch einfach in die Ausgabe ohne zu schauen wie sie aussehen, oder prüft ihr die auf irgendetwas? Bei mir Funktioniert alles so wie es soll, aber wenn ich einen Vector im Verctor habe und da ne Liste drin ist mit einem Symbol, dann macht der beim Kopieren nen Fehler.
(Wie gesagt, ich kopiere die Objekte nur und schaue nicht nach ihrem Inhalt, trotzdem verändert sich dieser scheinbar beim kopieren.)

Kling ein bissl blöd. Ich zeigs euch mal an einem Beispiel:
Aus diesem Vektor:
(vector 1 2 1 (vector 12 12 'a '(1 'b 3))))
Wird das hier:
(list (make-freq (vector 12 12 'a (list 1 (list 'quote 'b) 3)) 1) (make-freq 2 1) (make-freq 1 2))

Das erste Symbol ist in Ordnung, aber das in der Liste nicht. Erwartet hätte ich eher sowas wie:
(list (make-freq (vector 12 12 'a (list 1 'b 3)) 1) (make-freq 2 1) (make-freq 1 2))

Benutzeravatar
MisterD123
Geek
Geek
Beiträge: 811
Registriert: 31. Okt 2006 20:04
Wohnort: Weiterstadt

Beitrag von MisterD123 »

(vector 1 2 1 (vector 12 12 'a '(1 'b 3))))
(vector 1 2 1 (vector 12 12 'a '(1 b 3))))

du hast vor dem b ein ' zuviel, dieser ' wurde zu 'quote umgeformt, als eigene unterliste..

Drudge
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 158
Registriert: 13. Apr 2004 20:17

Beitrag von Drudge »

verstehe ich nicht? b ist doch ein symbol und muss folglich doch so geschrieben werden: 'b????
Bei 'a hab ichs ja auch so gemacht! Oder ist das ne vektorspezifische Eigenschaft?

zu1u
Mausschubser
Mausschubser
Beiträge: 64
Registriert: 6. Nov 2006 20:14

Beitrag von zu1u »

'(x y z) macht doch automatisch schon nen symbol aus x y z, deswegen haste einen ' "zuviel" oder auch nicht wie mans will...

auf jedenfall passt alles

Drudge
Endlosschleifenbastler
Endlosschleifenbastler
Beiträge: 158
Registriert: 13. Apr 2004 20:17

Beitrag von Drudge »

oh, des wusste ich nicht, oder hab es einfach wieder vergessen... lol
danke!

shaddar
Neuling
Neuling
Beiträge: 6
Registriert: 15. Nov 2006 19:33

Beitrag von shaddar »

Moin.

Hab auch mal ne Frage zum frequency. Und zwar : bekommt die Funktion immer denselben Inhalt als Vektor (also entweder ein Vektor aus Vektoren, ein Vektor aus Nummern, etc) oder soll auch implementiert sein, dass unterschiedliche Datentypen im "außenstehenden" Vektor stehen können ?

MfG

PS : Bei den Beispielen ists immer der Fall, dass die Einträge des außenstehenden Vektors vom gleichen Typ sind, daher die Frage.

Benutzeravatar
Red*Star
Kernelcompilierer
Kernelcompilierer
Beiträge: 510
Registriert: 28. Nov 2006 19:40

Beitrag von Red*Star »

shaddar hat geschrieben:PS : Bei den Beispielen ists immer der Fall, dass die Einträge des außenstehenden Vektors vom gleichen Typ sind, daher die Frage.
Äh nö... das Beispiel hier im Template zum Beispiel nicht:

Code: Alles auswählen

(frequency (vector 'A (vector 'A 'B 'C) 5 5 'A))
(list (make-freq (vector 'A 'B 'C) 1)(make-freq 'A 2) (make-freq 5 2))
Das dürfte auch deine Frage beantworten. ;)

Grüße,

Red

Antworten

Zurück zu „Archiv“