HA 3.6

niklas
Mausschubser
Mausschubser
Beiträge: 45
Registriert: 1. Okt 2007 15:39

HA 3.6

Beitrag von niklas »

muss die funktion insert-first nur auf die unterlisten anwendbar sein, oder soll die auch anwendbar sein, wenn man nur eine liste und das element, das an erster stelle eingesetzt werden soll, angibt?

also soll bspw.

Code: Alles auswählen

 (insert-first '(a b c) 'x)
auch funktionieren?

danke schonmal,
niklas

Christian.
Mausschubser
Mausschubser
Beiträge: 56
Registriert: 6. Aug 2007 22:38

Beitrag von Christian. »

hallo niklas!
also bei mir spuckt

Code: Alles auswählen

(insert-first '(23 11 -4 9 0) 'X)
das hier aus

Code: Alles auswählen

(list 'X 23 11 -4 9 0)
ich denke schon, dass es so sein soll. denn in der aufgabenstellung steht (unter-)listen was auch eine liste miteinschliesst.

gruss, christian

niklas
Mausschubser
Mausschubser
Beiträge: 45
Registriert: 1. Okt 2007 15:39

Beitrag von niklas »

aber im template steht nur irgendwas vonwegen unterlisten. naja, dann muss ich mir noch was überlegen.

hast du noch ne besondere fallunterscheidung gemacht?

Christian.
Mausschubser
Mausschubser
Beiträge: 56
Registriert: 6. Aug 2007 22:38

Beitrag von Christian. »

ich hab nur geschaut was das erste element fuer ein typ ist und demnach eine fallunterscheidung getroffen.

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

Beitrag von Stumpf.Alex »

Wenn du keine Unterlisten vor findest, ist das Ergebnis die alte Liste selbst, denke ich. Denn die Aufgabe lautet an Unterlisten das X anzuhängen. Aber so wie Christian das gezeigt hat...keine Ahnung wie ich das beschreiben soll. Auch an einzelne Elemente würde ich sagen, dass man da nix davor einfügt. Aber naja..

Christian.
Mausschubser
Mausschubser
Beiträge: 56
Registriert: 6. Aug 2007 22:38

Beitrag von Christian. »

ich kann mich ja auch irren.
keine ahnung...ich habs halt so implementiert.

niklas
Mausschubser
Mausschubser
Beiträge: 45
Registriert: 1. Okt 2007 15:39

Beitrag von niklas »

trotzdem schonmal vielen dank. :)

werd dann noch ne fallunterscheidung implementieren...aber erstma den rest fertig machen :/

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

Beitrag von Osterlaus »

Christian. hat geschrieben:hallo niklas!
also bei mir spuckt

Code: Alles auswählen

(insert-first '(23 11 -4 9 0) 'X)
das hier aus

Code: Alles auswählen

(list 'X 23 11 -4 9 0)
ich denke schon, dass es so sein soll. denn in der aufgabenstellung steht (unter-)listen was auch eine liste miteinschliesst.

gruss, christian
Das halte ich für definitiv falsch. Dann müsste vor jede Liste erst das Element gehängt werden, wodurch das angegebene Beispiel

Code: Alles auswählen

(insert-first '(() (a) (a b)) 'x)
in der Ergebnisliste auch erstmal das anzuhängende Element enthalten müsste, also wäre dann das Beispielergebnis

Code: Alles auswählen

'(x (x) (x a) (x a b))
- und das ist ja explizit nicht so angegeben.

misch0ng
Neuling
Neuling
Beiträge: 4
Registriert: 17. Nov 2007 15:17

Beitrag von misch0ng »

Der Vertrag ist ja folgendermaßen angegeben:
(listof (listof X)) X -> (listof (listof X))

Bedeutet das nicht, dass als input sowieso nur Listen mit Unterlisten akzeptiert werden?

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

Beitrag von Osterlaus »

Ja, wahrhaftig. Obwohl ich mich grade damit schwertue, das Gegenteil gescheit abzufangen... Sollte das oben angegebene Beispiel

Code: Alles auswählen

(insert-first '(23 11 -4 9 0) 'X)
nun eher

Code: Alles auswählen

(list (list 'X) (list 'X) (list 'X) (list 'X) (list 'X))
oder einen Fehler liefern?

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

Beitrag von ChRiZz88 »

Also bei mir fügt er 'x nur in Unterlisten ein, was die Folge hat, dass, falls keine Unterliste vorhanden ist, eben die Liste selbst ausgegeben wird, d.h.:

(insert-first '(6) 'x) --> (list 6)
(insert-first '() 'x) --> empty

Ich glaube, das ist auch okay so, denn wieso sollte es einen Fehler geben, wenn keine Unterliste vorhanden ist? Einen "künstlichen" Fehler zu produzieren, bzw. false auszugeben, ist ja nur dazu da, um einen Laufzeitfehler zu vermeiden..

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

Beitrag von Osterlaus »

Das widerspricht aber dem angegebenen Beispiel. Dein zweites Beispiel müsste (list x) liefern, so wie es auch bei der Aufgabenstellung steht...

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

Beitrag von ChRiZz88 »

Nein, denn im angegebenen Beispiel ist das () in einer Liste, d.h. es ist eine Unterliste ;) Das macht er dann natürlich auch...

Christian.
Mausschubser
Mausschubser
Beiträge: 56
Registriert: 6. Aug 2007 22:38

Beitrag von Christian. »

ihr habt natuerlich recht...hab das mit dem vertrag irgendwie verrafft :(
habs jetzt auch so gemacht wie ChRiZz88.
scheint mir am vernuenftigsten zu sein.

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

Beitrag von Osterlaus »

Ah, okay, Chris mit der komischen Schreibweise :D Aber die Fallunterscheidung krieg ich grad trotzdem nicht hin... Bei mir führt (insert-first '(6) 'x) zu (list (list 'x)). Hmm, nochmal die Defaults prüfen...

Antworten

Zurück zu „Archiv“