Ah, that's much better. Thank you Dan. On Fri, 8 Jan 2016 at 14:52 Dan <[email protected]> wrote:
> 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]> >> 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 >>>>>> >>>>>>
