removed superfluous file
This commit is contained in:
@@ -1,53 +0,0 @@
|
|||||||
module Powerset
|
|
||||||
|
|
||||||
global _calculatedPowerSets = Matrix{Int64}(undef, 1, 0)
|
|
||||||
global _grownUntil = 0
|
|
||||||
|
|
||||||
function getPowerSet(setSize::Integer)
|
|
||||||
global _calculatedPowerSets
|
|
||||||
global _grownUntil
|
|
||||||
wantedPowerSetSize = 2^setSize
|
|
||||||
if setSize <= _grownUntil
|
|
||||||
return _calculatedPowerSets[1:wantedPowerSetSize, 1:setSize]
|
|
||||||
else
|
|
||||||
currentPowerSetSize = 2^_grownUntil
|
|
||||||
newPowerSets = zeros(Int64, wantedPowerSetSize, setSize)
|
|
||||||
indices = CartesianIndices(_calculatedPowerSets)
|
|
||||||
copyto!(newPowerSets, indices, _calculatedPowerSets, indices)
|
|
||||||
for i ∈ (_grownUntil+1):setSize
|
|
||||||
indicesTarget = CartesianIndices((2^(i-1)+1:2^i, 1:(i-1)))
|
|
||||||
indicesSource = CartesianIndices((1:2^(i-1), 1:(i-1)))
|
|
||||||
copyto!(newPowerSets, indicesTarget, newPowerSets, indicesSource)
|
|
||||||
for j ∈ 1:currentPowerSetSize
|
|
||||||
newPowerSets[currentPowerSetSize + j, i] = 1;
|
|
||||||
end
|
|
||||||
currentPowerSetSize *= 2
|
|
||||||
end
|
|
||||||
_calculatedPowerSets = newPowerSets
|
|
||||||
_grownUntil = setSize
|
|
||||||
return _calculatedPowerSets
|
|
||||||
end
|
|
||||||
end
|
|
||||||
|
|
||||||
function getPowerSubSet(setSize::Integer, subSetSize::Integer)
|
|
||||||
PowerSet = getPowerSet(setSize)
|
|
||||||
setSizes = dropdims(sum(PowerSet, dims = 2), dims = 2)
|
|
||||||
powerSubSetSize = binomial(setSize, subSetSize)
|
|
||||||
powerSubSets = Matrix{Int64}(undef, powerSubSetSize, subSetSize)
|
|
||||||
j = 1
|
|
||||||
for i ∈ axes(PowerSet, 1)
|
|
||||||
if setSizes[i] == subSetSize
|
|
||||||
l = 1
|
|
||||||
for k ∈ axes(PowerSet, 2)
|
|
||||||
if PowerSet[i, k] == 1
|
|
||||||
powerSubSets[j, l] = k
|
|
||||||
l += 1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
j += 1
|
|
||||||
end
|
|
||||||
end
|
|
||||||
return powerSubSets
|
|
||||||
end
|
|
||||||
|
|
||||||
end
|
|
||||||
Reference in New Issue
Block a user