Velocity Reviews

Velocity Reviews (http://www.velocityreviews.com/forums/index.php)
-   Ruby (http://www.velocityreviews.com/forums/f66-ruby.html)
-   -   Two Dimensional Array (http://www.velocityreviews.com/forums/t851251-two-dimensional-array.html)

Justin To 06-27-2008 10:23 PM

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
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-forum.com/.


Shashank Agarwal 06-29-2008 04:48 PM

Re: Two Dimensional Array
 
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-forum.com/.


Todd Benson 06-29-2008 08:39 PM

Re: Two Dimensional Array
 
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 06-29-2008 11:54 PM

Re: Two Dimensional Array
 

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-forum.com/.



gem install narray

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


>
>


a @ http://codeforpeople.com/
--
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 06-30-2008 12:09 AM

Re: Two Dimensional Array
 
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.rubypal.com for details and updates!


Justin To 06-30-2008 12:31 AM

Re: Two Dimensional Array
 
Thanks for all the help!
--
Posted via http://www.ruby-forum.com/.



All times are GMT. The time now is 11:44 AM.

Powered by vBulletin®. Copyright ©2000 - 2014, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.