Two dimention arrays and accessing syslog.

S

Sean Murphy

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 = 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.
 
S

Stefano Crocco

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 =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
 
S

Sean Murphy

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" <[email protected]>
To: "ruby-talk ML" <[email protected]>
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 = 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
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top