2015-11-08 60 views
0

我想弄清楚如何創建一個字符串的變體,通過用另一個數組中的另一個字符替換字符串中的一次。創建一個可能的字符串變量數組

例如:

變化= 「ABC」

getVariations 「XYZ」 的變化

應返回:

[ 「XBC」, 「YBC」 ,「zbc」,「axc」,「ayc」,「azc」,「abx」,「aby」,「abz」]

我不太清楚如何去做這件事。我嘗試遍歷字符串,然後使用列表理解添加可能的字符,但最終失去了字符。

[C++ xs | c <- splitOn "" variations] 

其中xs是字符串的尾部。

請問有人能指點我正確的方向嗎?

回答

2

遞歸可以定義getVariations replacements input

  • 如果input是空的,結果是...
  • 如果input(a:as),合併的結果:
    1. 從一個字符替換areplacements
    2. 保持a相同並執行getVariationsas

這意味着getVariations定義可以看IKE:

getVariations replacements [] = ... 
getVariations replacements (a:as) = ...#1... ++ ...#2... 

這也可能有助於決定什麼樣的getVariations類型是:

getVariations :: String -> String -> ??? 
相關問題