Two Dimensional Array

class Tda

def initialize(width=0, height=0)
if((width==0) && width<height)
raise NotImplementedError,
“(#{width}) width Tda cannot have a height.”
else
@tda = Array.new(width).map!{ Array.new(height) }
end
end

def width?
return @tda.size
end

def height?
if(width?>0)
return @tda[0].size
else
return nil
end
end

#–Returns the dimensional size (x x y) as a string
def size
[email protected]

if(width?>0)
  h = @tda[0].size
else
  h = 0
end

return "#{w}x#{h}"

end

#–Returns true if both Tda’s have equal widths and heights
def eql_size?(tda)
bool=false

lh=size.split('x')
rh=tda.size.split('x')

if(lh[0]==rh[0])
  bool=true
end

if(lh[1]==rh[1])
  bool=true
else
  bool=false
end

return bool

end

end

This is what I’ve got so far, but I can’t seem to figure out how to
write methods for: copying a Tda to another Tda, and indexing the Tda.
Thanks for the help!

Justin To wrote:

class Tda

def initialize(width=0, height=0)
if((width==0) && width<height)
raise NotImplementedError,
“(#{width}) width Tda cannot have a height.”
else
@tda = Array.new(width).map!{ Array.new(height) }
end
end

def width?
return @tda.size
end

def height?
if(width?>0)
return @tda[0].size
else
return nil
end
end

#–Returns the dimensional size (x x y) as a string
def size
[email protected]

if(width?>0)
  h = @tda[0].size
else
  h = 0
end

return "#{w}x#{h}"

end

#–Returns true if both Tda’s have equal widths and heights
def eql_size?(tda)
bool=false

lh=size.split('x')
rh=tda.size.split('x')

if(lh[0]==rh[0])
  bool=true
end

if(lh[1]==rh[1])
  bool=true
else
  bool=false
end

return bool

end

end

This is what I’ve got so far, but I can’t seem to figure out how to
write methods for: copying a Tda to another Tda, and indexing the Tda.
Thanks for the help!

I haven’t tried this, but this method might help -

def copy_tda(original_array)
new_tda = []
original_array.each_index do |i|
new_a = []
original_array[i].each_index { |j| new_a <<
original_array[i][j].clone }
new_tda << new_a
end
return new_tda
end

On Fri, Jun 27, 2008 at 5:23 PM, Justin To [email protected] wrote:

This is what I’ve got so far, but I can’t seem to figure out how to
write methods for: copying a Tda to another Tda, and indexing the Tda.

Marshal.dump and Marshal.load might help you.

Todd

Hi –

On Sat, 28 Jun 2008, Justin To wrote:

if(lh[1]==rh[1])
bool=true
else
bool=false
end

return bool
end

See Ara Howard’s advice about using narray. Still – I just wanted to
suggest one or two things to make this method more concise and clear.

One thing you could do is:

def eql_size?(tda)
lh=size.split(‘x’)
rh=tda.size.split(‘x’)

 return lh[0] == rh[0] && lh[1] == rh[1]

end

In general, it’s good to let the comparison methods, like ==, do their
thing, which is to produce true and false. There’s usually no need to
store and test the results separately.

Moreover, in this particular case, I think you could just do:

def eql_size?(tda)
size == tda.size
end

:slight_smile:

David

Thanks for all the help!

On Jun 27, 2008, at 4:23 PM, Justin To wrote:

end

if(lh[0]==rh[0])
end

end

This is what I’ve got so far, but I can’t seem to figure out how to
write methods for: copying a Tda to another Tda, and indexing the Tda.
Thanks for the help!

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

gem install narray

it’s this and much much more - not to mention insanely fast.

a @ http://codeforpeople.com/