如何在Haskell中为排列的输出添加字符?

时间:2013-06-22 11:03:10

标签: haskell

我想在Haskell中创建一个应用程序,它可以从几个字符中提供所有可能性。这适用于置换函数。但是现在我想在列表中的每个单词的输出中添加前缀和后缀。像:

输入:

combinations "prefix" "sufix" "randomletters"

输出(类似这样)

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

应用程序的背景: 像拼字游戏一样。首先,前缀就像单词可以从2开始。那么这个词可以结束的2个字母。然后是你手中的字母。

1 个答案:

答案 0 :(得分:1)

您可以map添加前缀的函数:

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

解决这个问题的方法是打破问题,就像你开始做的那样:

  • 创建一个函数来提供每个排列(permutation
  • 创建函数以添加前缀&后缀(\x -> pre ++ x等)
  • 将这些函数应用于每个排列(map)以创建两个单词列表
  • 合并两个单词列表(++