Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Array within an array

0 views
Skip to first unread message

Mahadev Ittina

unread,
Nov 14, 2009, 11:58:03 AM11/14/09
to
for i in (0..@cw_num)
for n in (0..@cl_num)
$array_floor [n,i] = [i*@cw_dist,0.0,n*@cl_dist]
end
end
--
Posted via http://www.ruby-forum.com/.

Mahadev Ittina

unread,
Nov 14, 2009, 12:03:14 PM11/14/09
to
$array_floor = []
for i in (0..7)
for n in (0..8)
$array_floor [n,i] = [i*var1,0.0,n*var2]
end
end

I am trying to create a array, which basically forms a grid, which is
evenly spaced in a Cartesian plane. The spacing is var1 and var2, in the
x and z directions. Plan is to copy columns on these 'points', which is
done in Sketchup using Ruby API scripts. So there are going to 8 and 9
columns respectively, and there are points when n = i, where there will
be common columns.

This is not working out for me very well. It makes sense to me, somehow
it doesn't seem to be working (it returns with no values).Any
suggestions? And If I want floors to this array, i.e. making it 3D, how
will it work?

Marnen Laibow-Koser

unread,
Nov 14, 2009, 2:56:16 PM11/14/09
to
Mahadev Ittina wrote:
> $array_floor = []
> for i in (0..7)
> for n in (0..8)
> $array_floor [n,i] = [i*var1,0.0,n*var2]
> end
> end

Almost every line of this code is problematic. To fix:
* Never use global variables.
* Instead of your "for" constructs, use "times".
* Use the proper syntax for multidimensional arrays (which is
array[x][y], not array[x, y]). array[x, y] has a completely different
meaning.

Best,
--
Marnen Laibow-Koser
http://www.marnen.org
mar...@marnen.org

Greg Barozzi

unread,
Nov 14, 2009, 5:33:42 PM11/14/09
to
Mahadev Ittina wrote:

> I am trying to create a array, which basically forms a grid, which is
> evenly spaced in a Cartesian plane. The spacing is var1 and var2, in the
> x and z directions. Plan is to copy columns on these 'points', which is
> done in Sketchup using Ruby API scripts. So there are going to 8 and 9
> columns respectively, and there are points when n = i, where there will
> be common columns.
>
> This is not working out for me very well. It makes sense to me, somehow
> it doesn't seem to be working (it returns with no values).Any
> suggestions? And If I want floors to this array, i.e. making it 3D, how
> will it work?

Hiya Mahadev

if you want to define a 10x10 multi-dimensional-array you can use the
map method

mda = (0..9).map { (0..9).map { nil } }

this builds a grid for you with nil as the default element in each cell
of the grid. (You can use something other than nil if you want.)

And then if you want to iterate through it there are a few ways you can
do it but like MLK says above one way is to use the times method like
this:

mda.length.times do |x|
mda[0].length.times do |y|
mda[x][y] = some_new_value
end
end

I like to chain array lengths through when I use times so that if I need
to later expand or shorten my array length then I don't have to modify
the code in too many places.

And that should pretty much get you started. =)
Good luck and happy rubying!
-greg

Robert Klemme

unread,
Nov 14, 2009, 6:03:45 PM11/14/09
to

$array_floor[n,i]=... does not assign to a two dimensional Array.
Rather, it assigns to a portion of the array:

irb(main):004:0> a=(1..10).to_a
=> [1, 2, 3, 4, 5, 6, 7, 8, 9, 10]
irb(main):005:0> a[3,2] = 555
=> 555
irb(main):006:0> a
=> [1, 2, 3, 555, 6, 7, 8, 9, 10]
irb(main):007:0>

Here's another option

array_floor = Array.new 7 do |i|
Array.new 8 do |n|
[i,0,n]
end
end

Note though that this will create a three dimensional matrix. Btw, for
structures like this "pp" is a useful utility for printing:

require 'pp'
pp array_floor

Kind regards

robert

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

Mahadev Ittina

unread,
Nov 18, 2009, 3:46:06 PM11/18/09
to
that is interesting.. i am only discovering more and more how
inefficient my method is.. thank you for your answers.. I will post if
there are any updates

Regards,
Mahadev

0 new messages