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ď č. 1Najzaují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)]]