20 個の数字の配列が与えられた場合、2 つのグループのすべての可能な組み合わせを抽出したいと思います。それぞれに 10 個の数字があります。順序は重要ではありません。
combinations([1, 2, 3], 2)
in Julia は、配列から引き出された 2 つの数字のすべての可能な組み合わせを提供しますが、引き出されなかったものも必要です...
20 個の数字の配列が与えられた場合、2 つのグループのすべての可能な組み合わせを抽出したいと思います。それぞれに 10 個の数字があります。順序は重要ではありません。
combinations([1, 2, 3], 2)
in Julia は、配列から引き出された 2 つの数字のすべての可能な組み合わせを提供しますが、引き出されなかったものも必要です...
少し遊んだ後、このコードを思いつきました。これはうまくいくようです。もっとエレガントに書くこともできると思います。
function removeall!(remove::Array, a::Array)
for i in remove
if in(i, a)
splice!(a, indexin([i], a)[1])
end
end
end
function combinationgroups(a::Array, count::Integer)
result = {}
for i in combinations(a, count)
all = copy(a)
removeall!(i, all)
push!(result, { i; all } )
end
result
end
combinationgroups([1,2,3,4],2)
6-element Array{Any,1}:
{[1,2],[3,4]}
{[1,3],[2,4]}
{[1,4],[2,3]}
{[2,3],[1,4]}
{[2,4],[1,3]}
{[3,4],[1,2]}