www.jammni.de

Logo - Kleiner Drache
Login
Username:

Passwort:

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

Logo - DracheHaskell-Forum

chris

Gepostet:
11.06.2008 14:38

zufällig einige Elemente einer Liste auswählen  
Ich bräuchte mal ein bisschen hilfe...
Ich soll aus einer Auswahl von Elementen einer Liste (von Teilern) die Summe bilden.
Die Teiler einer Zahl bzw. die Summe daraus ist ja kein problem,
aber dann komm ich nur soweit, dass ich aus allen teilern einer Zahl die Summe bilde (s.u.)

Meine Frage: Wie kann ich nur bestimmte Elemente einer Liste auswählen?


-- ist die Zahl n pseudovollkommen,
-- d.h. laesst sie sich als Summe (einer Auswahl) ihrer Teiler darstellen?

pseudovollkommen :: Int -> Bool
pseudovollkommen n = n == summe (teiler n)


nur zur Vollständigkeit:

-- die Liste aller Teiler einer Zahl n (inklusive 1 und exclusive n)
teiler :: Int -> [Int]
teiler 0 = []
teiler n = [a | a <- [1..n - 1], n `mod` a == 0]

-- die Summe aller Zahlen in der Liste list
summe :: [Int] -> Int
summe [] = 0
summe (x:xs) = x + summe xs


Vielen Dank für jede Antwort!!!
Zum Seitenanfang    
 
Siracusa

Gepostet:
11.06.2008 17:33

   
Hallo chris,

was du suchst ist die filter-Funktion aus dem Prelude:
Hugs> :type filter
filter :: (a -> Bool) -> [a] -> [a]
Hugs> filter even [1..9]
[2,4,6,8] :: [Integer]
Hugs> filter (\x -> x>3 && x<7) [1..9]
[4,5,6] :: [Integer]


Viele Grüße,

Siracusa
Zum Seitenanfang