A
B
C
D
E
100

求小于1000的所有3的倍数或5的倍数之和。

sum$filter(

\x->x`mod`3==0||x`mod`5==0

)[1..999] 

100

concat::[[a]]->[a]

concat xss = [x| xs <- xss, x<-xs]

concat [[1,2,3],[4,5],[6]]

[1,2,3,4,5,6]

100

zip ['a','b','c'] [1,2,3,4]

[('a',1),('b',2),('c',3)]

100

take 3 "abcde"

"abc"

100

下面函数的功能是什么?

sp xs ys = sum[xs!!i*ys!!i| i<-[0..n-1]]

                      where n = length xs

求两个向量的内积

200

求1到5的平方

[x^2|x<-[1..5]]

200

[x|x<-[1..10], even x]

[2,4,6,8,10]

200

pairs :: [a] -> [(a,a)]

pairs xs = zip xs (tail xs)

pairs [1,2,3,4]

[(1,2) ,(2,3),(3,4)]

200

zip "abc"  [1,2,3,4]

[('a',1),('b',2),('c',3)]

200

take 10 cycle([1,2,3])

[1,2,3,1,2,3,1,2,3,1]

300

[(x,y)|x<-[1,2,3],y<-[4,5]]

[(1,4),(1,5),(2,4),(2,5),(3,4),(3,5)]

300

factors:: Int -> [Int]

factors n = [x| x<-[1..n], n `mod` x == 0]

factors 15

[1,3,5,15]

300

sorted:: Ord a => [a] -> Bool

sorted xs = and[x<=y|(x,y) <- pairs xs  ]

sorted [1,3,2,4]

False

300

count::Char -> String -> Int

count x xs = length [x'| x' <- xs, x == x' ]

count  's' "Mississippi"

4

300

take 6 (repeat 5)

[5,5,5,5,5,5]
400

[(x,y)|y<-[4,5], x<-[1,2,3]]

[(1,4),(2,4),(3,4),(1,5),(2,5),(3,5)]

400

prime::Int -> Bool

prime n = factors n == [1,n]

prime 15

False

400

positions x xs =[i| (x', i)<- zip xs [0..], x==x']

positions 0 [1,0,0,1,0,1,1,0]

[1,2,4,7]

400

perfect number:一个整数等于其小于自身的全部因子之和

例如:6=1+2+3

设计一个判断某数是否是perfect number的函数

perfect : Int -> Bool

perfect n = sum(init (factors n))==n

400

replicate 3 6

[6,6,6]

500

[(x,y)|x<-[1..3],y<-[x..3]]

[(1,1),(1,2),(1,3),(2,2),(2,3),(3,3)]

500

primes :: Int -> [Int]

primes n =[x| x<-[2..n], prime x ]

primes 40

返回小于40的全部质数

500

length "abcd"

4

500

\Sigma_{i=0} ^{n-1}xs_i \times ys_i

sp xs ys = sum[x*y| (x,y) <- zip xs ys]

500

4 `elem` [3,4,5,6]

True

M
e
n
u