Two dimention arrays and accessing syslog. : RUBY

This is a discussion on Two dimention arrays and accessing syslog. within the RUBY forums in Programming Languages category; All, A newby question, only been using Ruby for about 2 days. Is there a better way of creating a two dimention array, than the code used below def create_world x, y row = Array.new y.times { |j| col = Array.new x.times { |i| map_type = rand(2) col[i] = map_type } row[j] = col } return row end world = create_world(gets.to_i, gets.to_i) Also, what is the best method of accessing the syslog file within Linux? I could open the file for reading, but I want to make sure there isn't a better method first. Regards Sean Murphy Skype: smurf20005 Life ...

Go Back   ObjectMix Forum > Programming Languages > RUBY

Object Mix

Register FAQ Calendar Search Today's Posts Mark Forums Read
  #1  
Old 01-14-2008, 03:14 AM
Sean Murphy
Guest
 
Default Two dimention arrays and accessing syslog.

All,

A newby question, only been using Ruby for about 2 days.

Is there a better way of creating a two dimention array, than the code used
below

def create_world x, y
row = Array.new

y.times {
|j|
col = Array.new
x.times {
|i|

map_type = rand(2)
col[i] = map_type
}
row[j] = col
}

return row
end

world = create_world(gets.to_i, gets.to_i)

Also, what is the best method of accessing the syslog file within Linux? I
could open the file for reading, but I want to make sure there isn't a
better method first.

Regards
Sean Murphy
Skype: smurf20005

Life is a challenge, treat it that way.


Reply With Quote
  #2  
Old 01-14-2008, 03:40 AM
Stefano Crocco
Guest
 
Default Re: Two dimention arrays and accessing syslog.

Alle luned=EC 14 gennaio 2008, Sean Murphy ha scritto:
> All,
>
> A newby question, only been using Ruby for about 2 days.
>
> Is there a better way of creating a two dimention array, than the code us=

ed
> below
>
> def create_world x, y
> =A0 row =3D Array.new
>
> =A0 y.times {
> =A0 =A0|j|
> =A0 =A0col =3D Array.new
> =A0 =A0x.times {
> =A0 =A0 |i|
>
> =A0 =A0 =A0 map_type =3D rand(2)
> =A0 =A0 =A0 col[i] =3D map_type
> =A0 =A0 }
> =A0 =A0 row[j] =3D col
> =A0 }
>
> =A0 return row
> end
>
> world =3D create_world(gets.to_i, gets.to_i)


This should work:

def make_2d_array n_row, n_col
Array.new(n_row) do
Array.new(n_col){ rand(2) }
end
end

make_2d_array(gets.to_i, gets.to_i)

The block form of Array.new creates an array of the size passed as argument=
,=20
then calls the block for each index of the array and stores the value=20
returned by the block in the corresponding element of the array (the block=
=20
can take one parameter, the index of the element, which wasn't necessary in=
=20
this case). See the ri documentation for Array.new for more information.

I hope this helps

Stefano

Reply With Quote
  #3  
Old 01-14-2008, 04:00 AM
Sean Murphy
Guest
 
Default Re: Two dimention arrays and accessing syslog.

Hi,

thanks for that, that was really cool code.

Regards
Sean Murphy
Skype: smurf20005

Life is a challenge, treat it that way.
----- Original Message -----
From: "Stefano Crocco" <stefano.crocco@alice.it>
To: "ruby-talk ML" <ruby-talk@ruby-lang.org>
Sent: Monday, January 14, 2008 7:40 PM
Subject: Re: Two dimention arrays and accessing syslog.


Alle luned́ 14 gennaio 2008, Sean Murphy ha scritto:
> All,
>
> A newby question, only been using Ruby for about 2 days.
>
> Is there a better way of creating a two dimention array, than the code
> used
> below
>
> def create_world x, y
> row = Array.new
>
> y.times {
> |j|
> col = Array.new
> x.times {
> |i|
>
> map_type = rand(2)
> col[i] = map_type
> }
> row[j] = col
> }
>
> return row
> end
>
> world = create_world(gets.to_i, gets.to_i)


This should work:

def make_2d_array n_row, n_col
Array.new(n_row) do
Array.new(n_col){ rand(2) }
end
end

make_2d_array(gets.to_i, gets.to_i)

The block form of Array.new creates an array of the size passed as argument,
then calls the block for each index of the array and stores the value
returned by the block in the corresponding element of the array (the block
can take one parameter, the index of the element, which wasn't necessary in
this case). See the ri documentation for Array.new for more information.

I hope this helps

Stefano


Reply With Quote
Reply


Thread Tools


All times are GMT -5. The time now is 07:19 PM.


Powered by vBulletin® Version 3.7.2
Copyright ©2000 - 2009, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
vB Ad Management by =RedTyger=

In an effort to better serve ads to our visitors, cookies are used on objectmix.com. For more information, check out our Privacy Policy.