0

20 個の数字の配列が与えられた場合、2 つのグループのすべての可能な組み合わせを抽出したいと思います。それぞれに 10 個の数字があります。順序は重要ではありません。

combinations([1, 2, 3], 2)

in Julia は、配列から引き出された 2 つの数字のすべての可能な組み合わせを提供しますが、引き出されなかったものも必要です...

4

3 に答える 3

1

少し遊んだ後、このコードを思いつきました。これはうまくいくようです。もっとエレガントに書くこともできると思います。

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]}
于 2013-10-04T16:09:12.563 に答える