2013-06-22 30 views
0

我想在Haskell中创建一个应用程序,它可以从几个字符中提供所有可能。这与排列功能一起工作。但是现在我想添加到列表中每个单词的前缀和后缀的输出。像:如何将字符添加到Haskell中的排列输出中?

输入:

combinations "prefix" "sufix" "randomletters" 

输出(像这样)

["prefixrandomletters", "prefixrandomletters","prefixrandomletters","prefixrandomletters","suffixrandomletters","suffixrandomletters","suffixrandomletters","suffixrandomletters","suffixrandomletters",] 

背景的应用程序: 像拼字游戏。首先,这个前缀就像这个单词可以开头的2个字母。然后2个字母可以结束。然后你手中的信件。

回答

1

您可以map,增加了前缀的函数:

combinations pre suf letters = prefixed ++ suffixed 
    where 
    perms = permutations letters 
    prefixed = map (\x -> pre ++ x) $ perms 
    suffixed = ... 

来解决,这是向下突破的问题,因为你已经开始做的方式:

  • 创建一个函数来给每个排列(permutation
  • 创建功能添加前缀&后缀(\x -> pre ++ x等)
  • 应用这些功能,每置换(map)创建的话两个列表
  • 组合字(++
+1

@ user2502169的两份名单,我刚刚更新了我的答案。 (我把它留给你完成后缀的实现:) :) – huon

+0

感谢您的支持! – user2502169

相关问题