我需要从一组给定的字符串中生成2D
数组。例如:
days =[ "Monday",
"Tuesday",
"Wednesday",
]
现在我想创建一个2D
数组,并且将以随机方式使用days
字符串填充此数组中的数据。
示例:
[monday, tuesday, wednesday],
[tuesday, wednesday, monday]
...
依赖于给定的尺寸
怎么做?
修改
我试过这个
# global variable
@@test_array = %w(:sunday :monday :tuesday)
def get_data(row, col)
@data_field = @@test_array.permutation.to_a(col)
return @data_field.slice!(row)
如果我通过了row:1
和col:1
它正在运行但是如果我在rows
和column
中传递了大数字20,则它会在数据库中存储null。
修改-2
days = ["monday, "tuesday"]
rows = 3
col = 3
它应该返回(由于随机生成而可能的解决方案之一)
[[monday, tuesday, monday],[tuesday, monday, tuesday], [monday, monday, tuesday]]
答案 0 :(得分:2)
如果您不想在子阵列中重复,可以使用Array#permutation
。
row
1 ∈[1; 3] days.permutation(col).to_a.slice(0, row)
2 ∈[0; 3] col
如果您想在子阵列中重复,可以使用Array#repeated_permutation
。
row
∈[1; 3] days.repeated_permutation(col).to_a.slice(0, row)
∈[0; 3 3 (= 27)]:col
如果您想在子阵列中重复并将列号扩展为自定义,与原始数组编号的长度无关,则可以使用Array#repeated_combination
。
row
∈[1; ∞ 3 )col
∈[0; col
days.repeated_combination(col).to_a.slice(0, row)
]:col
1 row
是每个子数组中元素的数量。
2 RandomAccessFile
是所需2D数组中子数组的数量。
3 上限指定为∞,表示此值不受原始数组长度的限制。