ı質問があります。 ıバイナリリストを生成したいのですが、リストのメンバ間では1ビットだけ変更されます。すべてのメンバー間でバイナリ1ビットの変更を生成
oneBitAll ::積分A => A - > [[文字列]
nに対する= 2
出力:
[ "00"、 "01"、 "11"、 "10"] [ "00"、 "10"、 "11"、 "01"] VEの
N = 3
oneBitAll 3
[[ "000"、 "001"、 "011" 「001」、「011」、「111」、「101」、「101」、「101」、「101」、 「100」、「110」、「010」、「000」、「001」、「101」、「100」、「110」、「111」、「011」、「010」、 「001」、「101」、「011」、「011」、「010」、「110」、「100」、「000」、「010」、「011」、「001」、「101」、 、 "111"、 "110"、 "100"]、.....]
メンバー間で1ビットだけが変更されます。
助けてください。 this.but私はすべての組み合わせを見つけたいため、これが唯一の
g 0 = [""]
g n = (map ('0':)) (g (n-1)) ++ (map ('1':)) (reverse (g (n-1)))
グレイコードを与える
はtrueです。
どのように特定のn個の番号に対してすべてのグレーコードを生成できますか?
permute [] = [[]]
permute xs = concatMap (\x -> map (x:) $ permute $ delete x xs) xs
g 0 = [""]
g n = (map ('0':)) (g (n-1)) ++ (map ('1':)) (reverse (g (n-1)))
oneBitAll n = (map transpose . permute . transpose $ g n)
このコードは、可能性の半分を生成します。このコードを追加することはできますか? 012 [001] [011] [010] [110] [111] [101] [100] [000] [010] [011] 「001」、「101」、「111」、「110」、「100」、「000」、「001」、「101」、「100」、「110」、「111」、「011」 「001」、「001」、「000」、「100」、「100」、「100」、「100」、「101」、 「001」、「011」、「111」、「110」、「010」、「000」、「100」、「110」、「010」、「011」、「111」、 "101"、 "001"]]
12人のメンバーを生成する必要があります。
難しいですか?どのようにできますか? – rooney
google "グレーコード" – ErikR
ありがとうございますが、これはすべての可能性を与えるでしょうか? – rooney