For the special problem of getting all the betas in the post, they can be calculated with combinatorics:
betas(levels,parts) = map(x->([x;levels+parts].-[0;x]-1)/parts, combinations(1:(levels+parts-1 ),(levels-1))) The idea is to choose which parts of (0.0,0.2), (0.2,0.4)... (0.8,1.0) go into which level. The function does it for any number of levels and parts. For example for 4 parts of (0,1) and a 2-level tree: julia> betas(2,4) [0.0,1.0] [0.25,0.75] [0.5,0.5] [0.75,0.25] [1.0,0.0] Needless to say this would be faster and more memory efficient than the other solutions. On Friday, January 8, 2016 at 1:23:13 AM UTC+2, Asbjørn Nilsen Riseth wrote: > > Ah, that makes sense. I've mostly been working with Floats, so I didn't > realise there was an Int type. > > On Thu, 7 Jan 2016 at 23:02 Kristoffer Carlsson <[email protected] > <javascript:>> wrote: > >> Just an unsolicited tip here. >> >> Try not to "over type" your functions. Your function here would be >> cumbersome to use for someone on a 32-bit system for example. Unless you >> have a good reason, prefer Int instead of explicit Int32 / Int64. >> >> >> On Thursday, January 7, 2016 at 7:18:31 PM UTC+1, Asbjørn Nilsen Riseth >> wrote: >>> >>> For future reference, I used the following: >>> >>> function traverse(numpoints::Int64, β::Array{Int64}, level::Int64 = 1) >>> N = length(β) >>> @assert 0 < level < N >>> >>> for i = 0:numpoints-sum(β[1:level-1]) >>> β[level] = i >>> if level < N-2 >>> traverse(numpoints, β, level+1) >>> else >>> for j = 0:numpoints-sum(β[1:N-2]) >>> β[N-1] = j >>> β[N] = numpoints - sum(β[1:N-1]) >>> @show β/numpoints >>> end >>> end >>> end >>> end >>> traverse(5, Array{Int64}(4)) >>> >>> Asbjørn >>> >>> >>> On Thursday, 7 January 2016 17:14:03 UTC, Asbjørn Nilsen Riseth wrote: >>>> >>>> Thank you both. I'll have a look at a recursion approach. >>>> >>>> >>>> On Thursday, 7 January 2016 13:47:02 UTC, Tim Holy wrote: >>>>> >>>>> This is a problem for recursion. See, for example, the LightGraphs or >>>>> Graphs >>>>> packages. >>>>> >>>>> Best, >>>>> --Tim >>>>> >>>>> On Thursday, January 07, 2016 02:10:18 AM Asbjørn Nilsen Riseth wrote: >>>>> > I would like to loop over all the \beta_i values of the following >>>>> tree. >>>>> > >>>>> > < >>>>> https://lh3.googleusercontent.com/-EBjanFs-BC4/Vo409IFAiTI/AAAAAAAAMEw/U7iq >>>>> >>>>> > Ev9nPmU/s1600/tree.png> >>>>> > >>>>> > What is the best Julia way of doing this? I'm also interested in >>>>> > generalising this to N levels. >>>>> > >>>>> > >>>>> > For the given tree, the following works. *Is there a way to use >>>>> @nloops to >>>>> > shorten this?* >>>>> > n = Int(1/0.2) >>>>> > for i_3 = 0:n >>>>> > for i_2 = 0:n-i_3 >>>>> > for i_1 = 0:n-i_2-i_3 >>>>> > i_0 = n-sum(@ntuple 3 i) >>>>> > β = [i_3, i_2, i_1, i_0]/n >>>>> > @show β >>>>> > end >>>>> > end >>>>> > end >>>>> >>>>>
