【发布时间】:2010-04-26 13:58:01
【问题描述】:
我想从一个向量填充一个二维数组。
我认为解释自己的最佳方式是举一些例子(数组长度为 [3,5])。
当向量为:[1, 0]
[
[4, 3, 2, 1, 0],
[4, 3, 2, 1, 0],
[4, 3, 2, 1, 0]
]
当向量为:[-1, 0]
[
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4],
[0, 1, 2, 3, 4]
]
当向量为:[-2, 0]
[
[0, 0, 1, 1, 2],
[0, 0, 1, 1, 2],
[0, 0, 1, 1, 2]
]
当向量为:[1, 1]
[
[2, 2, 2, 1, 0],
[1, 1, 1, 1, 0],
[0, 0, 0, 0, 0]
]
当向量为:[0, 1]
[
[2, 2, 2, 2, 2],
[1, 1, 1, 1, 1],
[0, 0, 0, 0, 0]
]
您有什么想法、一个好的图书馆或计划吗? 欢迎任何cmets。谢谢。
注意:我咨询了 Ruby “Matrix” 和 “Vector” 类,但我看不出有什么方法可以以我的方式使用它...
编辑:其实每个值都是按照给定向量计算的单元格数(从当前单元格到最后一个单元格)。
如果我们以向量为 [-2, 0] 的例子为例,其值为 *1*(在数组 [2, 3] 处):
array = [
[<0>, <0>, <1>, <1>, <2>],
[<0>, <0>, <1>, <1>, <2>],
[<0>, <0>, <1>, *1*, <2>]
]
...我们可以这样想:
向量 [-2, 0] 表示 -2 是 cols 和 0 是行。所以如果我们 在数组 [2, 3] 中,我们可以移动 1 次 在左边(左边,因为 2 是 负数),长度为 2(因为 -2.abs == 2)。而且我们不会在顶部或底部移动,因为 0 表示 行。
【问题讨论】:
-
我不了解 Ruby,但这似乎不是任何语言的标准库中都能找到的那种东西。我想您可能必须编写自己的算法。
-
你能解释一下生成数组的规则吗?这些是唯一可能的向量值吗?
标签: ruby math arrays vector multidimensional-array