www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

lisarudolph

Gepostet:
05.05.2013 14:26

Listen zusammenfügen  
Hallo Ihr,

Ich muss für die Uni einige Aufgaben lösen...jedoch hakt es bei mir an einer wichtigen Stelle!
Erst mal hier die Aufgabe :

Eine Funktion, die eine Liste von Zahlen erhält und zunächst alle Zahlen groößer gleich 500
entfernt und anschließend alle verbleibenden Zahlen quadriert.
Z.B. soll für [1,3,10,30,90,500,1000,3000] das Ergebnis [1,9,100,900,8100] berechnet
werden.

Nun bin ich schon so weit gekommen:

list = [ 1..556]
test_list list = list > 500
go_le list = filter test_list list

das Problem ist nun wie ich noch zusätzlich die neue Liste quadriere....bei den anderen Aufgaben ist dies ähnlich, den ersten Schritt bekomme ich immer hin nur dann muss anschließend immer noch etwas gemacht werden nachdem die Liste verändert wurde....diesen zweiten Schritt bleibt mir im Moment ein Rätsel

Als weiteres Beispiel :

listc = [[ "Maus" , "Laus" , "Haus"] , ["Affe", "Haus"] , ["Banane", "Katze"]]
p_test listc = concat listc -> die Listen werden zusammengefügt, und anschließend ausschließlich jene Strings in die Ausgabe übernimmt , die mind. 10 Zeichen lang sind zB als ergebnis [ "MausLausHaus","BananeKatze"]

Ich hoffe ihr könnt mir helfen
Lg Lisa
Zum Seitenanfang    
 
Landei

Gepostet:
06.05.2013 11:49

   
Du suchst die map-Funktion:


-- mit Unterfunktion
squareList xs = map square xs where
square x = x^2

-- mit Lambda
squareList xs = map (\x -> x^2) xs

-- oder kürzer
squareList xs = map (^2) xs


Nebenbei bemerkt bietet sich für solche Aufgaben oft eine List-Comprehension an:


squareListLesserThan500 xs = [x^2 | x <- xs, x < 500]


Zum Seitenanfang    
 
lisarudolph

Gepostet:
06.05.2013 18:36

   
vielen dank !! Ich versuche es gleich mal ..:)
Zum Seitenanfang