![]() |
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/. |
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/. |
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 |
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 |
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! |
Re: Two Dimensional Array
|
| All times are GMT. The time now is 09:33 AM. |
Powered by vBulletin®. Copyright ©2000 - 2013, vBulletin Solutions, Inc.
SEO by vBSEO ©2010, Crawlability, Inc.