我需要创建或知道Haskell中是否有一个函数允许您从列表中添加项目.所以,例如:
cumulativeAmount :: [Integer] -> [Integer]
cumulativeAmount [1,2,5,8,8,0,4,2] = [1,3,8,16,24,24,28,30]
cumulativeAmount [1,4,7,0,5] = [1, 1+4, 1+4+7, 1+4+7+0, 1+4+7+0+5] = [1,5,12,12,17]
Run Code Online (Sandbox Code Playgroud)
我尝试使用map和scanl函数,但我没有得到我想要的东西,因为我添加了所有元素.
我需要在Haskell中创建一个函数,其工作方式如下
periodicity ::[Integer] ->[Integer]
periodicity [1,2,3,3,4,1,2,3,3,4...] = [1,2,3,4]
periodicity [0,1,2,2,5,4,3,3,0,1,2,5,4...] = [0,1,2,5,4,3]
Run Code Online (Sandbox Code Playgroud)
也就是说,从列表中你得到的部分总是重复,数学科学中的部分将被称为函数的周期.
我已经尝试过这个,但是因为我想要与无限列表一起工作,我没有像我想要的那样工作
periodicty :: Eq a => [a] -> [a]
periodicity xs = take n xs
where l = length xs
n = head [m | m <- divisors l,
concat (replicate (l `div` m) (take m xs)) == xs]
Run Code Online (Sandbox Code Playgroud)
我发现这个函数给了我句号的长度,我本可以解决问题,但我不明白代码在哪里:
periodo 1 = 1
periodo n = f 1 ps 0
where
f 0 (1 : xs) pi = pi
f _ (x : xs) pi = …Run Code Online (Sandbox Code Playgroud) 在Haskell中,我有以下问题:
toBin :: Integer -> Integer
toBin n = read (showIntAtBase 2 intToDigit n "")
-- ?> toBin 558745840
-- 100001010011011100100011110000
-- (0.01 secs, 117,680 bytes)
digitosAgrupados :: Integer -> [[Integer]]
digitosAgrupados n = group [read[d] | d <- show n]
-- ?> digitosAgrupados (toBin 558745840)
-- [[1],[0,0,0,0],[1],[0],[1],[0,0],[1,1],[0],[1,1,1],[0,0],[1],[0,0,0],[1,1,1,1],[0,0,0,0]]
-- (0.01 secs, 288,624 bytes)
Run Code Online (Sandbox Code Playgroud)
我必须删除那些来自的列表 digitosAgrupados n
[[1],[0,0,0,0],[1],[0],[1],[0,0],[1,1],[0],[1,1,1],[0,0],[1],[0,0,0],[1,1,1,1],[0,0,0,0]] --> [[0,0,0,0],[0],[0,0],[0],[0,0],[0,0,0],[0,0,0,0]]
Run Code Online (Sandbox Code Playgroud)
也就是说,从一个由零和一个零的列表组成的列表中,提取一些列表.我试过了 filter (all odd) xss