gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 15:53:22 29 4
gpt4 key购买 nike

我正在做另一个 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/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com