convert string array to interger array in in one line

J

Jags Rao

hi guys

i have a array like this for e.g

[["0", "0", "0", "0", "0", "3", "3"],
["0", "0", "0", "0", "0", "3", "3"],
["0", "0", "0", "0", "0", "3", "3"],
["0", "3", "0", "0", "0", "0", "3"],
["0", "0", "0", "0", "0", "0", "3"]]

how wud i convert to this

[[0, 0, 0, 0, 0, 3, 3],
[0, 0, 0, 0, 0, 3, 3],
[0, 0, 0, 0, 0, 3, 3],
[0, 0, 0, 0, 0, 3, 3],
[0, 0, 0, 0, 0, 0, 3],
[0, 0, 0, 0, 0, 0, 3],
[0, 3, 0, 0, 0, 0, 3],
[0, 0, 0, 0, 0, 0, 3],

i.e a string array to integer array in 1 line if possible

pls help
 
S

Stefano Crocco

Alle Wednesday 05 November 2008, Jags Rao ha scritto:
hi guys

i have a array like this for e.g

[["0", "0", "0", "0", "0", "3", "3"],
["0", "0", "0", "0", "0", "3", "3"],
["0", "0", "0", "0", "0", "3", "3"],
["0", "3", "0", "0", "0", "0", "3"],
["0", "0", "0", "0", "0", "0", "3"]]

how wud i convert to this

[[0, 0, 0, 0, 0, 3, 3],
[0, 0, 0, 0, 0, 3, 3],
[0, 0, 0, 0, 0, 3, 3],
[0, 0, 0, 0, 0, 3, 3],
[0, 0, 0, 0, 0, 0, 3],
[0, 0, 0, 0, 0, 0, 3],
[0, 3, 0, 0, 0, 0, 3],
[0, 0, 0, 0, 0, 0, 3],

i.e a string array to integer array in 1 line if possible

pls help

a.map{|i| i.map{|s| s.to_i}}

Stefano
 
R

RichardOnRails

hi guys

i have a array like this for e.g

[["0", "0", "0", "0", "0", "3", "3"],
 ["0", "0", "0", "0", "0", "3", "3"],
 ["0", "0", "0", "0", "0", "3", "3"],
 ["0", "3", "0", "0", "0", "0", "3"],
 ["0", "0", "0", "0", "0", "0", "3"]]

how wud i convert to this

[[0, 0, 0, 0, 0, 3, 3],
 [0, 0, 0, 0, 0, 3, 3],
 [0, 0, 0, 0, 0, 3, 3],
 [0, 0, 0, 0, 0, 3, 3],
 [0, 0, 0, 0, 0, 0, 3],
 [0, 0, 0, 0, 0, 0, 3],
 [0, 3, 0, 0, 0, 0, 3],
 [0, 0, 0, 0, 0, 0, 3],

i.e a string array to integer array in 1 line if possible

pls help

Maybe this is a little clearer:

aStrings = [["0", "0", "0", "0", "0", "3", "3"],
["0", "0", "0", "0", "0", "3", "3"],
["0", "0", "0", "0", "0", "3", "3"],
["0", "3", "0", "0", "0", "0", "3"],
["0", "0", "0", "0", "0", "0", "3"]]

aFixnums = aStrings.map{|i| i.map{|s| s.to_i}}
puts aStrings[0][0].class.to_s # => String
puts aFixnums[0][0].class.to_s # => Fixnum
puts aFixnums[0][0].integer? # => true (So a Fixnum is_a Integer)

Note that the last line asserts that a Fixnum object is indeed an
Integer

HTH,
Richard
 
T

Todd Benson

hi guys

i have a array like this for e.g

[["0", "0", "0", "0", "0", "3", "3"],
["0", "0", "0", "0", "0", "3", "3"],
["0", "0", "0", "0", "0", "3", "3"],
["0", "3", "0", "0", "0", "0", "3"],
["0", "0", "0", "0", "0", "0", "3"]]

how wud i convert to this

[[0, 0, 0, 0, 0, 3, 3],
[0, 0, 0, 0, 0, 3, 3],
[0, 0, 0, 0, 0, 3, 3],
[0, 0, 0, 0, 0, 3, 3],
[0, 0, 0, 0, 0, 0, 3],
[0, 0, 0, 0, 0, 0, 3],
[0, 3, 0, 0, 0, 0, 3],
[0, 0, 0, 0, 0, 0, 3],

i.e a string array to integer array in 1 line if possible

Here's a weird one for your enjoyment (arr is your array)...

require 'matrix'; p Matrix[*arr].map {|i| i.to_i}.to_a

...of course, just like Stefano's solution, the object must respond to
the #to_i method.

You can #join it and split it up (#each_slice) again (my first cool
solution, but looks _really_ ugly). Mapping twice is the easiest and
is the way you probably should go.

Todd
 

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

Forum statistics

Threads
473,767
Messages
2,569,572
Members
45,046
Latest member
Gavizuho

Latest Threads

Top