gpt4 book ai didi

Haskell 中的每个字符将字符串分成 6 个部分

转载 作者:行者123 更新时间:2023-12-02 04:48:49 25 4
gpt4 key购买 nike

我希望能够将一个字符串每个字符拆分为 6 个单独的字符串。

例如 IAMABADPROGRAMMER

将导致:IDA、APM、MRM、AOE、BGR、AR

是否有一个 haskell 函数可以做到这一点?

谢谢

最佳答案

目前还没有一个函数可以做到这一点,但它可以很容易地编写:

import Data.List (transpose)

chunk :: Int -> [a] -> [[a]]
chunk _ [] = []
chunk n xs = first : chunk n rest where (first, rest) = splitAt n xs

splitSkip :: Int -> [a] -> [[a]]
splitSkip n xs = transpose $ chunk n xs

main :: IO ()
main = print $ splitSkip 6 "IAMABADPROGRAMMER"

我的第一直觉是将其推广到所有列表,而不仅仅是 Char 的列表。当您记得 [String] 类型与 [[Char]] 相同时,您会看到您最终得到了 Char 的二维矩阵code>s,如果你从左到右向下浏览每一列,你会得到原来的列表。好吧,这与转置矩阵并将每一行从上到下向下移动相同,这与首先将原始列表拆分为 n 元素的 block 相同。在这一点上,我有了解决方案,只是倒退。我编写了一个快速函数来分块列表,然后使用 Data.List 中的 transpose 函数来完成它。

关于Haskell 中的每个字符将字符串分成 6 个部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19275100/

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