BeispielKlausur pfp Haskell Frage (zipWith)


elem ist hier glaube ich laut Aufgabenstellung nicht erlaubt, oder?

ich habs daher auch etwas umständlicher, scheint aber zu funktionieren:

[m] 1. loop found a = if found==0 then [a] else
2. loop found a (x:xs) = if x==a then x:loop 1 a xs else x:loop found a xs
3. einfuegen a (x:xs) = if x == a then x:loop 1 a xs else x:loop 0 a xs[/m]


Ich glaub du solltest dir die Aufgabe nochmal anschaun: „sofern es die Elemente in beiden Listen gibt“

D.h. bei [1…10] [11…20] ist der Schnitt , also darf nichts rauskommen => Ausgabe: !!
Da fehlt noch ein if…


also ich versteh das so dass es das Element an der Position in beiden Listen gibt.

schau dir mal Haskell : zipWith beispiel 3 an,
so denk ich ist es auch in der aufgabe gemeint, also zipwith aus dem prelude selber zu implementieren


[quote=Der K]elem ist hier glaube ich laut Aufgabenstellung nicht erlaubt, oder?[/quote]Doch, nochmal genau lesen.


darf man generatoren verwenden? uns wurde gesagt dass das nicht erlaubt wäre in der klausur


Ok, ja, denke die wollten von uns, dass wir das nachproggen… Trotzdem is’es shit formuliert.

ich würde mir auf jeden Fall GENAU durchlesen was drübersteht… Und nichts anderes verwenden! :wink:


Oh, hast Recht.

Hab wohl als Standardaufgabentyp den Text nicht mehr so genau gelesen… die restlichen Vorschriften sind ja immer die gleichen.
Wobei wenn ich ehrlich bin: wäre mir die elem-fkt jetzt nicht hier noch mal über den weg gelaufen hätte ich in der Klausursituation raten müssen wie man sie korrekt verwendet :frowning:


Oder sich schnell selbst die Funktion schreiben :slight_smile:


hat jemand ne lösung für erhoehe (aufgabe 5a) klausur 2009 )


erhoehe [] _ = []
erhoehe (x:xs) y = if y==0 then (x+1):xs else x : (erhoehe xs (y-1))


Jetzt noch die Parameter umdrehen (laut Angabe soll das Int der erste Parameter sein):

erhoehe _ [] = []
erhoehe n (x:xs)
    | n == 0     = (x+1) : xs
    | otherwise  = x : erhoehe (n-1) xs