I was looking for a way to create an array like:
[[1,1], [1,2], [1,3]
[2,1], [2,2], [2,3]
[3,1], [3,2], [3,3]]
For now I came up with this solution:
w=3 # or any int
h=3 # or any int
array = []
iw=1
while iw<=w do
ih=1
while ih <=h do
array<<[iw, ih]
ih+=1
end#do
iw+=1
end#do
But, I'm sure there must be a quicker way..? This takes 1.107 seconds... (w=1900; h=1080) Regards
EDIT: I should've noticed that I'm stuck with 1.8.6..
Use either product
or repeated_permutation
:
[1, 2, 3].product([1, 2, 3]) # => [[1, 1], ...
# or
[1, 2, 3].repeated_permutation(2) # => [[1, 1], ...
product
is in Ruby 1.8.7+ (accepts a block in 1.9.2+) while repeated_permutation
in 1.9.2+. For other versions of Ruby, you can use include my backports
gem and include 'backports/1.9.2/array/repeated_permutation'
or include 'backports/1.8.7/array/product'
.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With