我想创建一个二维数组
每个数组的元素是1到10
,每个数组的元素长度为3
,每个数组内容不一样
。
说实话有点晕
[
[1, 2, 3],
[1, 2, 4],
[1, 2, 5],
[1, 2, 6],
[1, 2, 7],
...
]
不能同时出现 [1,2,3] 和 [3,2,1] 虽然顺序不同 但元素一样 单个数组的元素不能出现 [9,9,9] 同一个元素在一个 Array 里只能出现一次
楼主说「一个二维数组」,后面又说「每个数组」。我只能假定后面的「每个数组」都是那「一个二维数组」里面的元素了。
[[1, 2, 3], [4, 5, 6], [7, 8, 9]]
笨方法
arr_base = [1,2,3,4,5,6,7,8,9,10]
arr = []
arr_base.each do |a|
arr_base.each do |b|
arr_base.each do |c|
arr[arr.length] = [a,b,c]
end
end
end
print arr
#7 楼 @blacktulip
1、[a, b, c] abc 三个元素之间不能重复
2、两个 [array] [array1] 之间的内容也不能重复 [1, 2, 3] 和 [3, 2, 1]
算做重复
$ gvim two_dimension_array.rb
#/usr/bin/env ruby #-- coding: utf-8 --
# Generate a 10x3 two-dimension array that each second dimension array has unique content.
class ArrayGenerator def initialize(length, width) @length, @width = length, width @array = Array.new end def get_array @length.times do @array.push random_array(@width) end @array end private def random_array(width) array = Array.new width.times do array.push rand(10) end array end end
if FILE == $0 g = ArrayGenerator.new 10, 3 p g.get_array end
$ ruby two_dimension_array.rb [[2, 9, 5], [5, 3, 4], [6, 8, 5], [5, 4, 7], [2, 3, 3], [6, 4, 6], [7, 4, 6], [8, 2, 5], [0, 3, 9], [8, 9, 9]]
这个呢
arr_base = [1,2,3,4,5,6,7,8,9,10]
arr = []
arr_base.each do |a|
arr_base[a..9].each do |b|
arr_base[b..9].each do |c|
arr[arr.length] = [a,b,c]
end
end
end
print arr
#17 楼 正解
#19 楼 @blacktulip ... combination 和 permutation 很正常吧,标准库连矩阵 QR 分解,LUP 分解都有 API