From: Josselin Date: 2007-02-18T01:20:09+09:00 Subject: Re: array .. more funkyness .. ;-) On 2007-02-17 17:09:32 +0100, Stefan Rusterholz said: > Josselin wrote: >> I need to produce such array : >> >> root = ["22", "friend 22", ["11", "contact 11", [ ] ] , ["13", >> "contact 13"], ["17", "contact 17"]] >> writing >> >> root[0] = friend.id_to_s >> root[1] = friend.pseudo >> >> then for each friend.contact , I write an array >> friend_array[0] = contact.id.to_s >> friend_array[1] = contact.pseudo >> ... then I would like to write >> friend_array[2] = [�] if contact.info.count > 0 >> .. I need to write an empty array in this case... (otherwise there is >> no friend_array[2] ) >> >> how can I write it ? >> >> tfyl >> >> joss > > Either recursively or iteratively with a stack. > def append_friends(append_to, friends) > friends.each { |contact| > as_array = [contact.id.to_s, contact.pseudo, []] > append_friends(as_array[2], contact.friends) > append_to[2] << as_array > } > append_to > end > > There are probably nicer ways to write the recursive variant. Feel free > to evolve it. > > Iterative version is left as an exercise to the reader ;-) (with ruby > the iterative variant of this > is most probably quite a bit faster btw.) > > My regards thanks a lot ! that's great... I'll try to find a recursive variant later.. joss