Haskell - egymásba ágyazott függvények
2012-03-15T19:48:44+01:00
2012-03-15T19:48:44+01:00
2022-07-19T16:45:43+02:00
mia893
Nos van egy feladat: sztringként adunk meg számokat, ebből kéne kiválogatni a prímszámokat. Kettészedtem: Először sztring-ből alakítok lista int-et. Majd az intből szedem ki a primszámokat. Nah most ezeket az istenért nem tudom összekapcsolni, pedig valószínű egyszerű, primitív feladat, csak nekem valahogy mégsem megy :) Ebben szeretnék valakitől segítséget kérni! Előre is köszönöm annak, aki foglalkozik vele picikét :)

Sztringból int:
-- String-bol egesz szam beolvasasa.
strToInt :: String -> Int
strToInt str = read str :: Int

-- Stringbol egy-egy szokozzel elvalasztott egesz szamok listaba olvasasa.
strToList :: String -> [Int]
strToList str = strToList2 str ""

strToList2 :: String -> String -> [Int]
strToList2 "" tmp = [strToInt tmp]
strToList2 (h:t) tmp
| h == ' ' = (strToInt tmp):(strToList2 t "")
| otherwise = strToList2 t (tmp ++ [h])

-- Egy egeszeket tartalmazo lista kiiratasa String-be.
listToStr :: [Int] -> String
listToStr [] = ""
listToStr (h:t) = show h ++ " " ++ listToStr t

Int-es prímszám kiválasztós:

-- Egy listabol primeket kivalogato fgv.
selectPrimes :: [Int] -> [Int]
selectPrimes list = filter prime list

prime :: Int -> Bool
prime a = (divnum a) < 3

-- Egy egesz szam osztoi darabszamat meghatarozo fgv.
divnum :: Int -> Int
divnum a = divnum2 a a

divnum2 :: Int -> Int -> Int
divnum2 a 1 = 1
divnum2 a b
| mod a b == 0 = divnum2 a (b-1) + 1
| otherwise = divnum2 a (b-1)
Mutasd a teljes hozzászólást!

abcd