  @sara_n/

# work ## No description

Files
• main.hs
main.hs
```1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
```
```primeni2x :: (a->a)->a->a
primeni2x f x = f (f x)

-- uzima dve liste kao parametre i pravi listu uredjenih parova odgovarajucih elemenata datih lista

up :: a -> a -> (a,a)
up x y = (x,y)

zip2 :: [Int] -> [Int] -> [(Int,Int)]
zip2 [] _ = []
zip2 _ [] = []
zip2 (x:xs) (y:ys) = (x,y):(zip2 xs ys)

-- uzima fju i dve liste i pravi listu primenjujuci fju na odgovarajuce elemente lista

--zipWith2 :: (a->[a]->[a])->[a]
zipWith2 :: (a -> b -> c) -> [a] -> [b] -> [c]
zipWith2 _ [] _ = []
zipWith2 _ _ [] = []
zipWith2 f (x:xs) (y:ys) = (f x y) : (zipWith2 f xs ys)

-- ponovi element X N puta
ponovi :: Int -> a -> [a]
ponovi 0 _ = []
ponovi n x = [x]++ (ponovi (n-1) x)

--uzima fju i listu i primenjuje fju na svaki element u listi pa dobijamo novu listu
map1 :: (a->b)->[a]->[b]
map1 _ [] = []
map1 f (x:xs) = (f x) : (map1 f xs)

-- uzima predikat i listu i vraca elemente liste koji zadovoljavaju taj predikat
filter1 :: (a->Bool)->[a]->[a]
filter1 _ [] =[]
filter1 p (x:xs) | p x = x : (filter1 p xs)
| otherwise =  filter1 p xs

-- da li je broj deljiv sa 3
deljiv3 :: Int -> Bool
deljiv3 x = if x `mod` 3 ==0 then True else False

sumnepkv :: Int -> Int
sumnepkv n = sum l
where
a= map(^2) [1..]
b= filter odd a
l= takeWhile (<n) b

--1.Napisati definiciju funkcije koja izracunava n-ti stepen broja x
nstepen :: Int -> Int -> Int
nstepen 0 _ = 1
nstepen n x = x * (nstepen (n-1) x)

--2.	Napistai funkciju kojom se proverava da li je dati prirodan broj savrsen broj je savrsen ako je jednak sumi delioca iskljucujuci njega samog
delioci :: Int -> [Int]
delioci n = filter (\a -> n `mod` a == 0) [1..n]

savrsen :: Int -> Bool
savrsen k | k== (sum (delioci k) - k) = True
| otherwise = False

--3.Odredi sve savrsene brojeve od 1 do n
savrsn :: Int -> [Int]
savrsn n = filter (\a -> savrsen a) [1..n]

--4.Napisati funkciju koja racuna sumu prvih n kvadrata celih brojeva.
--suma2n :: Int -> Int
--suma2n n = sum l
--where
--l= map (^2) [1..n]
--l= takeWhile (<=n) a

--5.5.	Trojka (x,y,z) pozitivnih celih brojeva je pitagorejska ako vazi x^2+y^2=z^2. Definisati funkciju koja vraca listu svih pitagorejskih trojki do date granice.