/ / ako urobiť výčet v haskell - haskell

ako urobiť vyčíslenie v haskell - haskell

Mám niekoľko znakov, napríklad [„ab“] a mám iba dve čísla, nulu a jednu. A chcem dostať odpoveď ako

[[("a", 1), ("b", 1)],
[("a", 0), ("b", 1)],
[("a", 1), ("b", 0)],
[("a", 0), ("b", 0)]]

Som začiatočník, mohol by mi niekto pomôcť?

Ďakujem mnohokrát.

odpovede:

4 pre odpoveď č. 1

Najzaujímavejšou časťou je generovanie zoznamu všetkých možných sekvencií 0 a 1; jedna cesta je via replicateM:

> replicateM 2 [1,0]
[[1,1],[1,0],[0,1],[0,0]]

Môžeš použiť map a zip odtiaľ:

> map (zip "ab") (replicateM 2 [1,0])
[[("a",1),("b",1)],[("a",1),("b",0)],[("a",0),("b",1)],[("a",0),("b",0)]]

Aby ste presne odpovedali na svoju odpoveď, musíte urobiť trochu navyše:

> map (zip "ab" . reverse) (replicateM 2 [1,0])
[[("a",1),("b",1)],[("a",0),("b",1)],[("a",1),("b",0)],[("a",0),("b",0)]]