5

入力リストに何を入れても、セットを取り、重複するエントリなしでパワーセットを出力するパワーセット関数をhaskellで作成する必要があります。例: [1,1] は [[],[1]] を返す必要があります。

    powerset [] = [[]]
    powerset (x:xs) = union((powerset xs)) (map (x:) (powerset xs))

union は、以前に定義された関数であり、重複することなく 2 つのセットに隣接します。上記のコードの問題は、重複を元のエントリとしてカウントするため、入力 [1,1] が [[],[1],[1],[1,1]] を返すことです。

何か案は?パワーセットをトリガーする前に、入力リストと空のリストでユニオンを使用して重複をスクラブすることを考えましたが、それがどのように見えるかはわかりません。

4

1 に答える 1

5
  1. 指定されたリストからすべての重複を削除します(nub関数を使用できます)。

  2. 現在使用しているアルゴリズムを実行します。

于 2015-03-27T11:46:10.907 に答える