gpt4 book ai didi

haskell - 获取haskell中字符串的所有旋转

转载 作者:行者123 更新时间:2023-12-05 08:49:10 26 4
gpt4 key购买 nike

所以我正在尝试制作一个函数“rot”,它接受一个字符串并返回一个包含所有可能旋转的字符串列表,例如 rot“abc”返回 [“abc”,“bca”,cab“],似乎用其他语言做起来非常简单,但我是 haskell 的新手,所以我想不出办法。这就是我目前所拥有的:

rot :: [Char] -> [[Char]]
rot word =
let
lst = [tail word ++ [head word]]
in
lst


main = do
print(rot "abc")

它按预期返回“bca”,但我想要找到所有旋转并将其存储在列表中的方法。

这是一个python的例子

def rot(word):
lst = []
for i in range(len(word)):
newWord1 = word[0:i]
newWord2 = word[i:]
newWordResult = newWord2 + newWord1
lst.append(newWordResult)
return lst

最佳答案

好吧,您或多或少可以直接翻译您的 Python 代码。在函数式编程中习惯使用递归代替迭代,并且从length word 向下计数到零更方便。除此之外,它几乎是一样的:

rot word =
let loop 0 lst = lst
loop i lst =
let newWord1 = take (i-1) word
newWord2 = drop (i-1) word
newWordResult = newWord2 ++ newWord1
in loop (i-1) (newWordResult : lst)

in loop (length word) []

关于haskell - 获取haskell中字符串的所有旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64573669/

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