我试图找出如何创建字符串的变体,通过在字符串中一次替换一个字符与另一个数组中的不同字符。
例如:
variations =“abc”
getVariations“xyz”变种
应该返回:
[“xbc”,“ybc”,“zbc”,“axc”,“ayc”,“azc”,“abx”,“aby”,“abz”]
我不太确定如何解决这个问题。我尝试遍历字符串,然后使用列表理解来添加可能的字符,但最终我失去了字符。
[c ++ xs | c <- splitOn "" variations]
其中xs是字符串的尾部。
有人能指出我正确的方向吗?
答案 0 :(得分:2)
递归地你可以定义getVariations replacements input
input
为空,则结果为... input
为(a:as)
,请合并以下结果:
a
替换为replacements
a
相同并在getVariations
as
这意味着getVariations
的定义可能看起来像ike:
getVariations replacements [] = ...
getVariations replacements (a:as) = ...#1... ++ ...#2...
它可能也有助于确定getVariations
的类型:
getVariations :: String -> String -> ???