haskell - 在haskell中将一系列数字连接成一个整数

标签 haskell concatenation

我正在做另一个 Project Euler 问题 - Problem 38 。 我有这个函数返回一个数字列表,但我需要的是该数字列表是一个数字。它计算整数的串联乘积。

f (a,b) = a*b
conProInt x n  = map f (zip (replicate n x) ([1..n]))

prob38 = maximum [ (conProInt (x) (n)) | x <- [100..500], n <- [1..9], (sort $ nub $ (decToList $ (conProInt x n) )) == (sort $ (decToList $ (conProInt x n) )), (sort $ nub $ (decToList $ (conProInt x n))) == [1..9] ]

例如:

conProInt 192 3

返回: [192,384,576]

我需要返回的是: 192384576

我四处搜寻,找不到一个函数,也找不到一个我可以构造的函数来提供我需要的功能。我该怎么办?

编辑:

我已经更新了脚本以合并更快的连接,但它没有返回正确的结果:

f (a,b) = a*b
conProInt x n  =( combine (map f (zip (replicate n x) ([1..n]))))
prob38 = maximum [ (conProInt (x) (n)) | x <- [1..50000], n <- [2..40], (sort $ nub $ (decToList $ (conProInt x n) )) == (sort $ (decToList $ (conProInt x n) )), (sort $ nub $ (decToList $ (conProInt x n))) == [1..9] ]

我很确定泛数字测试

(sort $ nub $ (decToList $ (conProInt x n) )) == (sort $ (decToList $ (conProInt x n) )), (sort $ nub $ (decToList $ (conProInt x n))) == [1..9]

不会失败。我试图使搜索尽可能大,但我得到的最大 9-pandigital 是 986315724。有什么建议吗? n 的取值范围是否很大?

最佳答案

通过String可能是最简单的:

read $ concat $ map (show) [192,384,576]

尽管您可能需要添加类型签名:

Prelude> (read $ concat $ map (show) [192,384,576]) :: Int
192384576

关于haskell - 在haskell中将一系列数字连接成一个整数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1524499/

相关文章:

haskell - 应用于参数的函数列表

haskell - 如何在 GHCJS 程序中定期执行操作?

python - python中两个或多个base64字符串的连接

sql - 在 Access 中连接记录和 GROUP BY

haskell - 我怎样才能找到包含我的包的堆栈解析器?

haskell - 这个 Haskell 代码中的 "id"是什么意思?

haskell - 在 GHCi 中设置 vi 为编辑器

c++ - std::string和int的串联导致移位。为什么?

c# - 连接多个整数以形成更大的整数

c++ - 关于非类类型错误的问题?