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

···

--
Posted via http://www.ruby-forum.com/.

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 Mon, Jun 25, 2012 at 9:06 PM, skolo pen <lists@ruby-forum.com> wrote:

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

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

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

···

--
Posted via http://www.ruby-forum.com/.

    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

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 05:25 AM, Avdi Grimm wrote:

On Mon, Jun 25, 2012 at 9:06 PM, skolo pen <lists@ruby-forum.com > <mailto:lists@ruby-forum.com>> wrote:

--
Lars Haugseth

Ah, that's just lovely.

···

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

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

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

--
Lars Haugseth

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 5:25 AM, Avdi Grimm <groups@inbox.avdi.org> wrote:

On Mon, Jun 25, 2012 at 9:06 PM, skolo pen <lists@ruby-forum.com> wrote:

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

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

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/

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

···

On Tue, Jun 26, 2012 at 11:28 AM, Robert Klemme <shortcutter@googlemail.com> wrote:

On Tue, Jun 26, 2012 at 5:25 AM, Avdi Grimm <groups@inbox.avdi.org> wrote:

On Mon, Jun 25, 2012 at 9:06 PM, skolo pen <lists@ruby-forum.com> wrote:

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

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"]]

--
remember.guy do |as, often| as.you_can - without end
http://blog.rubybestpractices.com/