El tema es que ruby no tiene arrays con doble indice, pero como contrapartida
podes "indexar" cualquier cosa dentro de un array. Por ejemplo, podes indexar
un array dentro de otro array:
a= []; a << 1 << 2 << 3 ==> a == [1, 2, 3]
b= []; b << 4 << 5 << 6 ==> b == [4, 5, 6]
c= []; c= << a << b; ==> c == [[1, 2, 3],[4, 5, 6]]
c[0][0] == a[0] == 1
c[1][0] == b[0] == 4
etc...
Tambien podes hacer algo "oldschool" :) como esta clase:
class Matriz
def initialize (x, y)
throw "Dimensiones invalidas" if (x * y) == 0
@xsize= x
@ysize= y
@values= Array.new(x * y)
end
def setValue(x, y, v)
@values[y * @ysize + x]= v
end
def getValue(x, y)
@values[y * @ysize + x]
end
def each
y, x= 0, 0
@values.each do |v|
yield v, x, y
if (x+= 1) >= @xsize
x= 0; y+= 1
end
end
end
end
a= Matriz.new(2, 2)
a.setValue 0, 0, 1
a.setValue 0, 1, 2
a.setValue 1, 0, 3
a.setValue 1, 1, 4
a.each do |v, x, y|
puts "Y: #{y} X: #{x} V: #{v}"
end
Rafael Bidegain <[EMAIL PROTECTED]> escribió: El 7/05/07, Ignacio Avellaneda
escribió:
> Hola. Soy medio nuevo en Ruby y quiero crear una matriz de orden
> definido por el usuario.
probá esto:
def mi_arry(x,y, valor)
matriz = Array.new(y)
for i in (0..(y-1))
matriz[i] = Array.new(x,valor)
end
matriz
end
z = mi_arry(3,4,5)
z.each {|y|
y.each {|value|
print "#{value} "
}
print "\n"
}
--
/* Rafael Bidegain
Linux Registered User # 204304
CaFeLUG Grupo de Usuarios de Software Libre de Capital Federal
http://www.cafelug.org.ar */
_______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar
---------------------------------
Preguntá. Respondé. Descubrí.
Todo lo que querías saber, y lo que ni imaginabas,
está en Yahoo! Respuestas (Beta).
Probalo ya! _______________________________________________
ruby mailing list
[email protected]
http://lista.rubyargentina.com.ar/listinfo.cgi/ruby-rubyargentina.com.ar