The combinations solution gives the same answers as the last solution you
posted, in reverse order.
julia> function decompose_jm(val, num)
out = Vector{Int}[]
for c in combinations(1:9, num)
if sum(c) == val
push!(out, c)
end
end
out
end
decompose_jm (generic function with 1 method)
julia> function sub(val, num, tot, res, pos, allres)
if val==tot && num==0
push!(allres, res)
elseif tot<val && num>0 && !isempty(pos)
sub(val, num-1, tot+pos[1], push!(copy(res),pos[1]), pos[2:end],
sub(val, num, tot, res, pos[2:end], allres))
else
allres
end
end
sub (generic function with 1 method)
julia> function decompose_pu(val, num)
sub(val, num, 0, Int16[], 1:(max(num, 10))-1, Array[])
end
decompose_pu (generic function with 1 method)
julia> for i in 1:45
for j in 1:20
if decompose_jm(i, j) != reverse(decompose_pu(i, j))
print(i, j)
end
end
end; print("success")
success
On Monday, October 19, 2015 at 10:00:12 AM UTC-4, Patrick Useldinger wrote:
>
> Jason,
> I cannot look into this right now but for sure the results are not
> correct.
> BTW the first version I posted does not give correct results either, but
> the last one does.
> Thanks very much, I think my next step is to get more acquainted with
> Julia ;-)
> -Patrick
>