--001636c5b35675bce3046f33ea41 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit 2009/7/21 Li Chen <chen_li3 / yahoo.com> > Hi all, > > I want to create a variable number of loop based on the input: > if the input is 1, I will create a loop ( I call it 1-loop); > if the input is 2 , I will create a nested loop( 2-loop); > if the input is 3, I will create a loop of loop of loop (3-loop); > if the input is 4, I will create a 4-loop, so on and so on. > How I can do that? > > Thanks, > > Li > > array {A B C D} > > #input is 1 > > array.each do |e1| > puts e1 > end > > > #input is 2 > array.each do |e1| > array.each do |e|2 > puts e1+e2 > end > end > > #input is 4 > array.each do |e1| > array.each do |e2| > array.each do |e3| > array.each do |e4| > puts e1+e2+e3+e4 > end > end > end > end You can do this recursively by decrementing a depth count until you hit the bottom, at which point to print the data you want: def print_sums(array, depth, memo ) array.each do |x| if depth 1 puts memo + x else print_sums(array, depth - 1, memo + x) end end end data W{A B C D} print_sums(data, 1) print_sums(data, 2) print_sums(data, 3) print_sums(data, 4) -- James Coglan http://jcoglan.com --001636c5b35675bce3046f33ea41--