gh0st040*
09.11.2010, 22:14
Hey Leute wir haben grade im Informatik-Unterricht Haskell und ich verzweifel die ganze Zeit sonst bin ich immer nahc langer Zeit aufs Ergebniss gekommen, aber jetzt hab ich keine Ahnung-.-
Als erstes ein paar Beispiele, welche ich hatte um zu zeigen um was es geht.
inssort: fügt ein Element in eine sortierte Liste ein. Dabei sollen doppelte Elemente erlaubt sein.
-- inssort
inssort n [] = [n]
inssort n (x:xs)
|n > x = [x] ++ (inssort n xs)
|otherwise = [n] ++ [x] ++ xs
del: löscht alle Vorkommen eines bestimmten Elements in einer Liste
-- del
del a [] = []
del a (x:xs)
|a == x = del a xs
|otherwise = [x] ++ (del a xs)
summe: liefert die Summe aller Listenelemente
--summe
summe [] = 0
summe (x:xs) = x + summe xs
So darum geht es! Jetzt zu den Aufgaben an denen ich komplett verzweifelt bin.
Schreiben Sie eine Funktion nehme_n, die die ersten n Elemente einer Liste zurückliefert. Wenn n größer als die Länge der Liste ist, soll die gesmate Liste zurückgeliefert werden.
Ich habe mit folgendes Gedacht, aber leider fehlt da noch was:
--nehme_n
nehme_n a [] = 0
nehme_n a (x:xs)
|a > (x:xs) = [x] ++ xs
Jetzt die 2te Aufgabe die ich noch weniger verstehe-..-
Eine Funktion nehme_solange, liefert alle Elemente einer Liste zurück, bis eine boolsche Bedingung nicht mehr erfüllt ist.
nehme_solange (<10) [1,2,3,12,4] = [1,3,5]
PS: Alle Funktionen müssen Rekursiv sein
Ich hoffe ihr könnte mir helfen, ich würd mich auch über tips freuen.
Danke im vorraus
gh0st
Als erstes ein paar Beispiele, welche ich hatte um zu zeigen um was es geht.
inssort: fügt ein Element in eine sortierte Liste ein. Dabei sollen doppelte Elemente erlaubt sein.
-- inssort
inssort n [] = [n]
inssort n (x:xs)
|n > x = [x] ++ (inssort n xs)
|otherwise = [n] ++ [x] ++ xs
del: löscht alle Vorkommen eines bestimmten Elements in einer Liste
-- del
del a [] = []
del a (x:xs)
|a == x = del a xs
|otherwise = [x] ++ (del a xs)
summe: liefert die Summe aller Listenelemente
--summe
summe [] = 0
summe (x:xs) = x + summe xs
So darum geht es! Jetzt zu den Aufgaben an denen ich komplett verzweifelt bin.
Schreiben Sie eine Funktion nehme_n, die die ersten n Elemente einer Liste zurückliefert. Wenn n größer als die Länge der Liste ist, soll die gesmate Liste zurückgeliefert werden.
Ich habe mit folgendes Gedacht, aber leider fehlt da noch was:
--nehme_n
nehme_n a [] = 0
nehme_n a (x:xs)
|a > (x:xs) = [x] ++ xs
Jetzt die 2te Aufgabe die ich noch weniger verstehe-..-
Eine Funktion nehme_solange, liefert alle Elemente einer Liste zurück, bis eine boolsche Bedingung nicht mehr erfüllt ist.
nehme_solange (<10) [1,2,3,12,4] = [1,3,5]
PS: Alle Funktionen müssen Rekursiv sein
Ich hoffe ihr könnte mir helfen, ich würd mich auch über tips freuen.
Danke im vorraus
gh0st