在Haskell,我有这个:
import Numeric
import Data.Char
import Data.List
toBin :: Integer -> Integer
toBin n = read (showIntAtBase 2 intToDigit n "")
-- λ> toBin 558745840
-- 100001010011011100100011110000
-- (0.01 secs, 117,680 bytes)
digits :: Integer -> [[Integer]]
digits n = group [read[d] | d <- show n]
-- λ> digits (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)
并且,我必须生成一个函数,该函数表示一行中具有二进制数的最大零数,但我不知道该怎么做。换句话说,
f :: Integer -> Integer
f 558745840 = 4
f 2018 = 3
f 529 = 4
f 558745840 = 4
因为1 0000 101001101110010001111 0000 ,它的行中有4个(最大数量)ceros。