haskell如何从预期输出中删除起始字
我正在尝试查找字符串的所有可能分区。例如,如果我使用这个单词“sun” 但是在我的代码中,输出包含用户输入的字符串,我不希望这样haskell如何从预期输出中删除起始字,haskell,Haskell,我正在尝试查找字符串的所有可能分区。例如,如果我使用这个单词“sun” 但是在我的代码中,输出包含用户输入的字符串,我不希望这样 // i dont want ["sun"] in the output my output : [["sun"],["su","n"],["s","un"],["s","u","n
// i dont want ["sun"] in the output
my output : [["sun"],["su","n"],["s","un"],["s","u","n"]]
在我的代码中是否有任何方法可以停止将整个单词包含到输出中的功能?
我想把字符串所有部分的长度作为辅助函数的输入:
长度(w),其中w是字符串,如果设置的计数器等于
长度(w)-1,停止制作分区,但我没有工作
我的代码是:
partition :: String->[[String]]
partition w = help_partition w
help_partition :: String->[[String]]
help_partition [x] = [[[x]]]
help_partition (x:xs) = [(x:head l):(tail l) | l<- help_partition xs] ++[[x]:l | l<- help_partition xs]
partition::String->[[String]]
分区w=帮助分区w
帮助分区::字符串->[[String]]
帮助分区[x]=[[x]]]
help_partition(x:xs)=[(x:head l):(tail l)|l您应该能够使您的分区
功能只需从help_partition
的结果中筛选出[w]
。换句话说:
partition w=filter(/=[w])(help\u partition w)
按照您的帮助\u分区
函数的工作方式,它将始终包含完整字符串作为返回列表的第一个元素,因此您可以使用tail
跳过它:
partition w = tail (help_partition w)
甚至:
partition = tail . help_partition
这是一种非常常见的技术:您经常会发现自己编写了一个递归函数,该函数几乎返回您想要的列表,但包含一个额外的特例作为第一个或最后一个元素,您可以使用tail
或init
删除这些元素。您应该能够完成当前正在做的事情,只需filter out[“sun”]
在结尾处。@MLavrentyev我不知道这就是我在这里问的原因,你能帮我吗?使用筛选功能更具体地说,看一下做筛选(/=[w])(帮助)
我不能使用库中的函数或任何其他固定函数function@tsoki你应该在你的原始问题中详细说明这一点。我也不确定你所说的“固定函数”是什么意思。请注意,filter
在不导入任何其他库的情况下可用。W!!!!非常感谢:)
partition = tail . help_partition