[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

Two Dimensional Array

Justin To

6/27/2008 10:23:00 PM

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
w=@tda.size

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!
--
Posted via http://www.ruby-....

5 Answers

Shashank Agarwal

6/29/2008 4:48:00 PM

0

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
> w=@tda.size
>
> 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
--
Posted via http://www.ruby-....

Todd Benson

6/29/2008 8:39:00 PM

0

On Fri, Jun 27, 2008 at 5:23 PM, Justin To <tekmc@hotmail.com> 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

ara.t.howard

6/29/2008 11:55:00 PM

0


On Jun 27, 2008, at 4:23 PM, 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
> w=@tda.size
>
> 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!
> --
> Posted via http://www.ruby-....


gem install narray

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


>
>

a @ http://codeforp...
--
we can deny everything, except that we have the possibility of being
better. simply reflect on that.
h.h. the 14th dalai lama




David A. Black

6/30/2008 12:10:00 AM

0

Hi --

On Sat, 28 Jun 2008, Justin To wrote:

> #--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

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

:-)


David

--
Rails training from David A. Black and Ruby Power and Light:
ADVANCING WITH RAILS July 21-24 Edison, NJ
See http://www.r... for details and updates!

Justin To

6/30/2008 12:31:00 AM

0

Thanks for all the help!
--
Posted via http://www.ruby-....