2016-05-10 3 views
1

Прежде всего, я не могу вспомнить имя этого повторения списка.Список списка со всей возможной комбинацией

У меня есть список:

myList = [0, 1, 2] 

Я хочу повторить список списка:

[[0,1,2],[1,2,0],...] 

Я знаю, что я могу сделать permutations myList Но это не будет покрывать повторяющиеся детали, такие как [[0,0,0],[1,1,1],[1,1,0],...]

Итак, мои вопросы - это то, что называется именем такого списка. Это не permutations и это определенно не combinations

В логике мы называем это truth table, я считаю.

И есть ли встроенная функция для этого в haskell?

+0

Я думаю, что это может быть дубликатом [этот вопрос] (http://stackoverflow.com/questions/35084867/haskell-generating-all-combinations-of-n- номера) –

ответ

4
GHCi, version 7.10.2: http://www.haskell.org/ghc/ :? for help 
Prelude> :m +Control.Monad 
Prelude Control.Monad> replicateM 3 [0,1,2] 
[[0,0,0],[0,0,1],[0,0,2],[0,1,0],[0,1,1],[0,1,2],[0,2,0],[0,2,1],[0,2,2],[1,0,0],[1,0,1],[1,0,2],[1,1,0],[1,1,1],[1,1,2],[1,2,0],[1,2,1],[1,2,2],[2,0,0],[2,0,1],[2,0,2],[2,1,0],[2,1,1],[2,1,2],[2,2,0],[2,2,1],[2,2,2]] 

Обратите внимание, что в основном длина списка разрешенных значений никоим образом не должна быть связана с длиной каждого списка вариантов.

2

с пониманием список

x = [0,1,2] 
[[a,b,c] | a<-x, b<-x, c<-x]       

[[0,0,0],[0,0,1],[0,0,2],[0,1,0],[0,1,1],[0,1,2],[0,2,0],[0,2,1],[0,2,2], 
[1,0,0],[1,0,1],[1,0,2],[1,1,0],[1,1,1],[1,1,2],[1,2,0],[1,2,1],[1,2,2], 
[2,0,0],[2,0,1],[2,0,2],[2,1,0],[2,1,1],[2,1,2],[2,2,0],[2,2,1],[2,2,2]] 
Смежные вопросы