Working with two arrays

What method could I use to do the following:

people = [“person1”,“person2”,“person3”]

issue = [“issue1”,“issue2”,“issue3”,“issue4”,“issue5”,“issue6”]

person1 => issue1

person2 => issue2

person3 => issue3

person1 => issue4

person2 => issue5

person3 => issue6

On Mon, Jun 25, 2012 at 9:06 PM, skolo pen [email protected] wrote:

person3 => issue3

person1 => issue4

person2 => issue5

person3 => issue6

people.cycle.take(issue.size).zip(issue)

Note that this will produce an array of arrays. A Hash doesn’t work for
this because any given key can only appear once.

On 06/26/2012 05:25 AM, Avdi G. wrote:

people.cycle.take(issue.size).zip(issue)

Nice!

Note that this will produce an array of arrays. A Hash doesn’t work for
this because any given key can only appear once.

Hash[people.each_with_index.map {|p, i|
[p, i.step(issue.size - 1, people.size).map {|j| issue[j]}]
}]

=> {“person1”=>[“issue1”, “issue4”],
“person2”=>[“issue2”, “issue5”],
“person3”=>[“issue3”, “issue6”]}

On 06/26/2012 11:14 AM, Hans M. wrote:

issue.group_by.with_index {|i,ii| people[ii % people.size]}

=> {“person1”=>[“issue1”, “issue4”],
“person2”=>[“issue2”, “issue5”],
“person3”=>[“issue3”, “issue6”]}

Ah, that’s just lovely.

issue.group_by.with_index {|i,ii| people[ii % people.size]}

=> {“person1”=>[“issue1”, “issue4”],
“person2”=>[“issue2”, “issue5”],
“person3”=>[“issue3”, “issue6”]}

On Tue, Jun 26, 2012 at 5:25 AM, Avdi G. [email protected]
wrote:

person2 => issue2
people.cycle.take(issue.size).zip(issue)
We can do that shorter

irb(main):004:0> issue.zip(people.cycle)
=> [[“issue1”, “person1”], [“issue2”, “person2”], [“issue3”,
“person3”], [“issue4”, “person1”], [“issue5”, “person2”], [“issue6”,
“person3”]]

:slight_smile:

Cheers

robert

On Tue, Jun 26, 2012 at 11:28 AM, Robert K.
[email protected] wrote:

people.cycle.take(issue.size).zip(issue)

We can do that shorter

irb(main):004:0> issue.zip(people.cycle)
=> [[“issue1”, “person1”], [“issue2”, “person2”], [“issue3”,
“person3”], [“issue4”, “person1”], [“issue5”, “person2”], [“issue6”,
“person3”]]

PS: if you want proper ordering, you can do

irb(main):005:0> issue.zip(people.cycle) {|i,p| printf “%s => %s\n”, p,
i}
person1 => issue1
person2 => issue2
person3 => issue3
person1 => issue4
person2 => issue5
person3 => issue6
irb(main):006:0> issue.zip(people.cycle).map {|i,p| [p,i]}
=> [[“person1”, “issue1”], [“person2”, “issue2”], [“person3”,
“issue3”], [“person1”, “issue4”], [“person2”, “issue5”], [“person3”,
“issue6”]]

Kind regards

robert