0
私はErlangのリスト:[0, 4, 3, 0]
を持っています。リストのインデックスに基づいて、同じ順列を繰り返さずにすべての組み合わせを見つけようとしています。Erlang - 同じインデックスを繰り返さないリストインデックスの置換
例えば、私が探している最終結果は[{0,4}, {0,3}, {0,0}, {4,3}, {4,0}, {3,0}]
です。
i
は、リストのインデックスを表すと、行列にリストの組み合わせを置くならば、これは結果のようになります。
{i[0], i[1]}, {i[0], i[2]}, {i[0], i[3]}{i[1], i[0]}, {i[1], i[2]}, {i[1], i[3]}{i[2], i[0]}, {i[2], i[1]}, {i[2], i[3]}{i[3], i[0]}, {i[3], i[1]}, {i[3], i[2]}
私はリストの内包表記をしようとしているが、今まで運がなかった:
[email protected]:~/erlang$ erl
Erlang/OTP 20 [erts-9.1] [source] [64-bit] [smp:4:4] [ds:4:4:10] [async-threads:10] [kernel-poll:false]
Eshell V9.1 (abort with ^G)
1> L = [0, 4, 3, 0].
[0,4,3,0]
2> [{X, Y} || X <- L, Y <- L, X < Y].
[{0,4},{0,3},{3,4},{0,4},{0,3}]
3> [{X, Y} || X <- L, Y <- L, X > Y].
[{4,0},{4,3},{4,0},{3,0},{3,0}]
4> [{X, Y} || X <- L, Y <- L].
[{0,0}, {0,4}, {0,3}, {0,0},
{4,0}, {4,4}, {4,3}, {4,0},
{3,0}, {3,4}, {3,3}, {3,0},
{0,0}, {0,4}, {0,3}, {0,0}]
5>