I have 2 arrays like so:
arr1 = [a, b, c]
arr2 = 1, 2, 3]
I want to get:
[a1, a2, a3, b1, b2, b3, c1, c2, c3]
I’ve tried a few things like
output = arr1.each do |a1|
arr2.each do |a2|
end
end
puts output
But that only lists the first array.
This works:
output = arr1.each do |a1|
arr2.each do |a2|
puts a1 + a2
end
end
But my “output” variable isn’t good. I get the desired text in the
console, but I can’t reuse it for what I really want to do.
This seems trivial, but I feel stupid. I can’t even search for this
properly. Please help… thanks.
mlopke
2
On Dec 19, 2013, at 3:37 AM, Mike L. [email protected] wrote:
I have 2 arrays like so:
arr1 = [a, b, c]
arr2 = 1, 2, 3]
I want to get:
[a1, a2, a3, b1, b2, b3, c1, c2, c3]
Heres one way:
a1 = %w{a b c}
=> [“a”, “b”, “c”]
a2 = %w{1 2 3}
=> [“1”, “2”, “3”]
a1.map {|c1| a2.map {|c2| c1 + c2} }.flatten
=> [“a1”, “a2”, “a3”, “b1”, “b2”, “b3”, “c1”, “c2”, "c3]
HTH,
Ammar
mlopke
3
a1 = [“a”, “b”, “c”]
a2 = [“1”, “2”, “3”]
a1.product(a2)
=> [[“a”, “1”], [“a”, “2”], [“a”, “3”], [“b”, “1”], [“b”, “2”],
[“b”, “3”], [“c”, “1”], [“c”, “2”], [“c”, “3”]]
a1.product(a2).map {|a| a.join }
=> [“a1”, “a2”, “a3”, “b1”, “b2”, “b3”, “c1”, “c2”, “c3”]
a1.product(a2).map(&:join)
=> [“a1”, “a2”, “a3”, “b1”, “b2”, “b3”, “c1”, “c2”, “c3”]
same as above
If you want to different things with one element
a1.product(a2).map {|el1, el2| el1.upcase + el2 }
=> [“A1”, “A2”, “A3”, “B1”, “B2”, “B3”, “C1”, “C2”, “C3”]
Best regards,
Abinoam Jr.
mlopke
4
Am 19.12.2013 02:57, schrieb Ammar A.:
mlopke
6
On Dec 19, 2013, at 7:31 AM, [email protected] wrote:
@Ammar: “>>” is rendered as quote by many email clients,
so using it as prompt is not so good in a mailing list.
I did not notice that. Thanks for pointing it out.
Regards,
Ammar
mlopke
7
On Dec 19, 2013, at 4:11 AM, Mike L. [email protected] wrote:
That’s it! Thank you!
I actually like Abinoams suggestion better.
a1.product(a2).map(&:join)
Regards,
Ammar
mlopke
8
Thanks.
Yukihiro M.: Ruby inherited the Perl philosophy of having MORE
THAN ONE WAY to do the same thing.
(artima - The Philosophy of Ruby)
That’s why it’s a cool language !!! 
mlopke
9
ar1=[‘a’,‘b’,‘c’]
ar2=[1,2,3]
ar3=Array.new()
ar1.each do |a| ar2.each do |n| ar3.push(a+n.to_s) end end
p ar3
mlopke
10
ar3 = [ar1, ar2]
ar3.flatten.permutation.map(&:join)