【发布时间】:2011-07-16 20:39:15
【问题描述】:
我有一个 n 维的因式分解数组,我想开发它。
这是一个例子:
develop([:a, :aa]) #=> [[:a, :aa]]
...等同于:[:a].product([:aa])。
或者,更复杂:
develop([:a, [:aa, :bb]]) #=> [[:a, :aa],
[:a, :bb]]
我正在使用 Ruby 1.9。谢谢你的任何想法。
编辑:
另一个例子,有 3 层嵌入数组:
develop([:a, [[:b, [:ba, :bb]],
[:c, [:ca, :cb]],
[:d, [:da, :db]]]]) #=> [[:a, :b, :ba],
[:a, :b, :bb],
[:a, :c, :ca],
[:a, :c, :cb],
[:a, :d, :da],
[:a, :d, :db]]
我想知道我们是否可以使用 Array 的产品方法 (http://ruby-doc.org/core-1.9.3/Array.html#method-i-product),即使我们有一些嵌入式数组。
【问题讨论】:
-
有趣的问题。在家工作? :) 您可以简单地使用
map来完成浅表案例。玩得开心。这些算法非常适合用 Ruby 编写。 -
不不,这不是家庭作业;)嗯,我明白了。但也许深层案例是矫枉过正的......我希望还有一种更轻松的方法来做到这一点。
-
8 分钟后没有答案?好的,这里是浅层案例:
def develop(a); a[1].map{|x| [a[0],x]}; end如果您无法将其扩展到深层案例,请告诉我们,除非这是一个真正的家庭作业问题。 -
我写最后一条时没有看到你的最后一条评论。我可以为你掀起深案。不过可能需要几分钟。
-
实际上,我想除了深入的案例地图 n 次之外还有其他方法......你看看这是否可能,@Ray?
标签: ruby arrays multidimensional-array