如何将整数转换为整数列表 例子:输入:1234输出:[1,2,3,4]任何关于这个问题的想法?
答案 0 :(得分:9)
这听起来像是家庭作业。这是一个你应该能够在Haskell中应用的通用算法:
答案 1 :(得分:8)
解决方案:
digs 0 = [] digs x = digs (x `div` 10) ++ [x `mod` 10]
来源:link
答案 2 :(得分:4)
使用整数运算:
digits' 0 = []
digits' n = n `rem` 10 : digits (n `quot` 10)
digits n = reverse (digits' n)
答案 3 :(得分:3)
这个非常简单的解决方案呢?
import Data.Char (digitToInt)
int2intList :: Integral i => i -> [Int]
int2intList s = map digitToInt $ show s
main = print $ int2intList 12351234999123123123
给出[1,2,3,5,1,2,3,4,9,9,9,1,2,3,1,2,3,1,2,3]
这个是可能的,也更普遍:
int2intList :: (Read i, Integral i) => i -> [i]
int2intList s = map (read.(:[])) $ show s
main = print $ int2intList 12351234999123123123
答案 4 :(得分:1)
使用unfoldr的替代解决方案:
import List
digits = reverse . unfoldr nextDigit
where nextDigit 0 = Nothing
nextDigit x = Just (r, q) where (q, r) = quotRem x 10
答案 5 :(得分:0)
jleedev:
我用divMod做了类似的事情。我不知道quotRem存在!
import Data.List ( unfoldr )
listify :: Integer -> [Integer]
listify = reverse . unfoldr f
where
f i = case divMod i 10 of
(0, 0) -> Nothing
(w, r) -> Just (r, w)