Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How to iterate multiple enumerables in ruby?

I know two arrays can be zipped and the result can be iterated with #each. But how do you do it with an unknown number of enumerables? Let's say

anand = %w(1-0 0.5-0.5 0.5-0.5 1.0)
carlsen = %w(0-1 0.5-0.5 0.5-0.5 1.0)
kramnik = %w(0.5-0.5 0.5-0.5 0.5-0.5 1.0)
players= [anand, carlsen, kramnik]
#something smart

players.each{|round|puts round} #first line should be  "1-0 0-1 0.5-0.5" 
like image 768
steenslag Avatar asked Dec 13 '22 22:12

steenslag


2 Answers

players.transpose.map {|a| a.join(" ")}
like image 79
glenn mcdonald Avatar answered Jan 02 '23 02:01

glenn mcdonald


anand.zip(carlsen, kramnik) do |round| puts round.join(" ") end

This will print:

1-0 0-1 0.5-0.5
0.5-0.5 0.5-0.5 0.5-0.5
0.5-0.5 0.5-0.5 0.5-0.5
1.0 1.0 1.0
like image 37
sepp2k Avatar answered Jan 02 '23 00:01

sepp2k