gpt4 book ai didi

Haskell - 解释数字

转载 作者:行者123 更新时间:2023-12-02 18:10:19 25 4
gpt4 key购买 nike

我有一个号码 9877342931235。使用 Haskell,我需要将其显示为:

987-734293-123-5

我尝试过散布列表,但当然,这会在每个数字之间放置“-”。我该如何做才能产生实际结果?

最佳答案

这是一个简单的通用解决方案,用于将列表拆分为指定长度的部分,然后使用指定的分隔符将它们连接在一起:

splitercalate :: [Int] -> [a] -> [a] -> [a]
splitercalate (x:[]) _ s = take x s
splitercalate (x:xs) delim s =
case splitAt x s of
(a, []) -> a
(a, bs) -> a ++ delim ++ splitercalate xs delim bs

在你的情况下 splitercalate [3, 6, 3, 1] "-"$ show 9877342931235 会给你你想要的。

更新:Antal S-Z在下面的评论中指出,您可以使用 Data.ListData.List.Split 中的函数更简洁地实现此功能:

splitercalate chunks sep = intercalate sep . splitPlaces chunks

您需要安装 split 软件包(可能通过执行 cabal install split 之类的操作),并导入 intercalatesplitPlaces 功能:

import Data.List (intercalate)
import Data.List.Split (splitPlaces)

这两个版本应该是等效的。如果您不介意额外的 import 和对 split 包的依赖,请使用 Antal S-Z - 它要好得多。

关于Haskell - 解释数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2941127/

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