www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

Daten merken
Auto-Login
Registrieren
 
Online
niemand
 
Forumsuche
Suche nach:

Logo - DracheHaskell-Forum

leo1983

Gepostet:
11.12.2007 16:26

aus einer Liste l alle Zahlen, die nach einer geraden Zahl stehen löschen  
Hallo, ich habe folgendes Problem:

aus einer Liste l alle Zahlen, die nach einer geraden Zahl stehen löschen


Mein Ansatz:

kill :: [Int] -> [Int]
kill [] = []
kill (y:x:xs) = if y`mod`2 == 0 then x: kill xs else kill xs
kill list = list


Aber leider funzt es net...jemand nen Plan?
Zum Seitenanfang    
 
Siracusa

Gepostet:
11.12.2007 20:10

   
Hallo,

kannst du das Probelm näher beschreiben? Sollen (a) nur die Zahlen direkt nach einer geraden Zahl gelöscht werden oder (b) wirklich alle noch folgenden Zahlen nach einer geraden Zahl gelöscht werden? Aus [1,3,4,5,7,8,9] würde bei (a) [1,3,4,7,8], bei (b) [1,3,4].

Dein Ansatz verfolgt wohl (a). Wenn y `mod` 2 == 0, dann ist die Zahl ja gerade, d.h. du müßtest danach nicht x : kill xs, sondern nur kill xs zurückgeben, weil das x ja dann weggeworfen werden soll. Also die 0 durch eine 1 ersetzen, dann stimmt es soweit. Das y muß aber in beiden Fällen davor bleiben! Das wirfst du momentan auch einfach weg.

Übrigens gibt es die Standard-Funktionen even bzw. odd, die prüfen, ob eine Zahl gerade bzw. ungerade ist.


Viele Grüße,

Siracusa
Zum Seitenanfang