Hi,
i have a little Java problem, I want to solve using Ruby. Therefor I
need an n-dimensional array. In Java it looks like this:
double dArray[][][] = new double[x.length()+1][y.length()+1][x.length()
+y.length()+3];
dArray[0][0][0] = 0;
dArray[0][0][1] = POSITIVE_INFINITY;
Further values will be computed through loops and written into the
array.
How do I initialize such an array in Ruby?
Infinity = 1.0/0
a = [ , , ]
a[0][0][0] = 0
a[0][0][1] = Infinity
The arrays will grow to whatever size you need them to.
HTH,
Michael Guterl
···
On Fri, Oct 31, 2008 at 8:09 PM, Christian <stadeschuldt@googlemail.com> wrote:
Hi,
i have a little Java problem, I want to solve using Ruby. Therefor I
need an n-dimensional array. In Java it looks like this:
double dArray = new double[x.length()+1][y.length()+1][x.length()
+y.length()+3];
dArray[0][0][0] = 0;
dArray[0][0][1] = POSITIVE_INFINITY;
Further values will be computed through loops and written into the
array.
How do I initialize such an array in Ruby?
Mike_Gold
(Mike Gold)
1 November 2008 00:45
3
Christian wrote:
i have a little Java problem, I want to solve using Ruby. Therefor I
need an n-dimensional array.
def Array.multi(*dimensions)
dimensions.reverse.inject(nil) { |result, dim|
Array.new(dim) { result ? result.dup : nil }
}
end
a = Array.multi(3, 4, 5)
p a[0] #=> [[nil, nil, ...], ... ]
p a[0][0] #=> [nil, nil, nil, nil, nil]
a[0][0][0] = :fred
a[2][3][4] = :barney
p a[0][0][0] #=> :fred
p a[2][3][4] #=> :barney
a[3][0][0]
# => exception: undefined method ` ' for nil; index past dim size
···
--
Posted via http://www.ruby-forum.com/\ .
Mike_Gold
(Mike Gold)
1 November 2008 09:04
4
Mike Gold wrote:
def Array.multi(*dimensions)
dimensions.reverse.inject(nil) { |result, dim|
Array.new(dim) { result ? result.dup : nil }
}
end
My mistake. Array#dup is not a recursive deep copy.
def Array.multi(*dimensions)
dimensions.reverse.inject(nil) { |result, dim|
Array.new(dim) { Marshal.load(Marshal.dump(result)) }
}
end
···
--
Posted via http://www.ruby-forum.com/\ .
Michael Guterl <mguterl@gmail.com> writes:
Hi,
i have a little Java problem, I want to solve using Ruby. Therefor I
need an n-dimensional array. In Java it looks like this:
double dArray = new double[x.length()+1][y.length()+1][x.length()
+y.length()+3];
dArray[0][0][0] = 0;
dArray[0][0][1] = POSITIVE_INFINITY;
Further values will be computed through loops and written into the
array.
How do I initialize such an array in Ruby?
Infinity = 1.0/0
~$ irb
irb(main):001:0> X = 7
=> 7
irb(main):002:0> Infinity = 1.0/0
=> Infinity
irb(main):003:0> 0 / Infinity
=> 0.0
irb(main):004:0> Infinity * Infinity
=> Infinity
irb(main):005:0> Beyond = Infinity
=> Infinity
irb(main):006:0> 2 * Infinity and Beyond
=> Infinity
irb(main):007:0> Infinity.infinite?
=> 1
Cool - I just learned about Infinity in Ruby. Hey Dave Thomas, maybe
you could add a bit about Infinity in the next relase of Programming
Ruby or Programming Ruby 1.9
···
On Fri, Oct 31, 2008 at 8:09 PM, Christian <stadeschuldt@googlemail.com> wrote:
a = [ , , ]
a[0][0][0] = 0
a[0][0][1] = Infinity
The arrays will grow to whatever size you need them to.
HTH,
Michael Guterl
Mike Gold <mike.gold.4433@gmail.com> writes:
Mike Gold wrote:
def Array.multi(*dimensions)
dimensions.reverse.inject(nil) { |result, dim|
Array.new(dim) { result ? result.dup : nil }
}
end
My mistake. Array#dup is not a recursive deep copy.
def Array.multi(*dimensions)
dimensions.reverse.inject(nil) { |result, dim|
Array.new(dim) { Marshal.load(Marshal.dump(result)) }
}
end
Yearning for macros...
Yeah, I don't think I've seen it discussed in any books before, but I
could be wrong.
I stumbled upon it accidentally one day when playing with ruby and
it's rules for division.
Michael Guterl
···
On Sat, Nov 1, 2008 at 12:43 PM, Brian Adkins <lojicdotcom@gmail.com> wrote:
Michael Guterl <mguterl@gmail.com> writes:
On Fri, Oct 31, 2008 at 8:09 PM, Christian <stadeschuldt@googlemail.com> wrote:
Hi,
i have a little Java problem, I want to solve using Ruby. Therefor I
need an n-dimensional array. In Java it looks like this:
double dArray = new double[x.length()+1][y.length()+1][x.length()
+y.length()+3];
dArray[0][0][0] = 0;
dArray[0][0][1] = POSITIVE_INFINITY;
Further values will be computed through loops and written into the
array.
How do I initialize such an array in Ruby?
Infinity = 1.0/0
~$ irb
irb(main):001:0> X = 7
=> 7
irb(main):002:0> Infinity = 1.0/0
=> Infinity
irb(main):003:0> 0 / Infinity
=> 0.0
irb(main):004:0> Infinity * Infinity
=> Infinity
irb(main):005:0> Beyond = Infinity
=> Infinity
irb(main):006:0> 2 * Infinity and Beyond
=> Infinity
irb(main):007:0> Infinity.infinite?
=> 1
Cool - I just learned about Infinity in Ruby. Hey Dave Thomas, maybe
you could add a bit about Infinity in the next relase of Programming
Ruby or Programming Ruby 1.9