我不确定你尝试解决什么问题。如果你的代码仅仅是一个更复杂的问题的例子,你真的需要以编程方式检查每一个permumation,那么你可能要与lazy
实验:
[*1..3].repeated_permutation(30).lazy.each do ||
# your condition
end
或者你可能想使嵌套iteratior非常明确:
[1,2,3].each do |x1|
[1,2,3].each do |x2|
[1,2,3].each do |x3|
# ...
[1,2,3].each do |x30|
permutation = [x1,x2,x3, ... , x30]
# your condition
end
end
end
end
end
但是我觉得用Ruby枚举来解决这类问题感觉不对。让我们看看你的字符串:
111111111111111111111111111111
111111111111111111111111111112
111111111111111111111111111113
111111111111111111111111111121
111111111111111111111111111122
111111111111111111111111111123
111111111111111111111111111131
...
333333333333333333333333333323
333333333333333333333333333331
333333333333333333333333333332
333333333333333333333333333333
我建议只使用enumerative combinatorics。只要看看模式并分析(或计算)您的情况可能会多久出现true
。例如,在字符串中有28个索引,子字符串可以放在222
的子字符串中,只有27个子字符串可以放在2222
子字符串中。如果放置子字符串,字符串的其他部分中可能没有1
?
我认为你的问题是一个数学问题,而不是编程问题。
不清楚。 ..... – sawa
需要澄清的是什么?我会很乐意详细说明! – Caleb
您需要编辑您的问题以包含示例。显示所需的输出,例如'arr = [[1,3,3,2,2],[4,1,1,1,2],[5,1,3,1,1]]''。确保包含一个变量(这里是'arr'),其值是输入数组,因此可以在答案和注释中引用它。 –