Haskell には、次の主な機能があります。
combinations pre suf letters = prefixed ++ suffixed
where
perms = permutation letters
prefixed = map (\x -> pre ++ x) $ perms
suffixed = map (\x -> x ++ suf) $ perms
main = do
ls1 <- fmap lines (readFile "dictionary.txt")
let ls2 = combinations "Apple" "Citrus" "Banana"
ls1 と ls2 を組み合わせて、二重のものを出力するにはどうすればよいですか? 二重のものは、大文字と小文字を区別しない必要があります。したがって、バナナとバナナがある場合は、そのうちの 1 つを出力する必要があります。
編集:
ls1 は、dictionary.txt の行のリストです
ls2 は、組み合わせと呼ばれる他の関数からのさまざまな組み合わせのリストです
ls1 と ls2 を結合/マージ/連結したい。ls3 のようなリストに。このリストには、dictionary.txt からのすべての行と、ls2 からの対立遺伝子の組み合わせ、および組み合わせ関数が含まれます。
次に、ls3 のすべての double 要素を出力として出力する必要があります。
編集2:
Dictionary.txt の構造 (多くの単語を含むランダムなリスト) は次のようになります。
Apple
Strawberry
Clown
.....
組み合わせ機能(私のコードの編集を参照):次のような入力から作成します:
combinations "a" "b" "ded"
出力:
["acd","adc","cdb","dcb"]
背景: アプリケーションはスクラブルのようなゲームです: "pre" と "suf" はボード上の文字です。そして「文字」はプレイヤーの文字です。
値の例:
ls1
["Apple","Strawberry","Clown".....]
ls2
["Clwno","Clonw","Clown"..]
ls3
["Apple","Strawberry","Clown","Clwno","Clonw","Clown"]
ls3 では、"Clown" という単語が 2 回表示されます。私が望む出力として:
["Clown"]
これが、ls3 でのダブルワードの意味です。