【发布时间】:2014-07-06 18:21:24
【问题描述】:
我想生成所有可能的方式来排列一定数量的元素number_of_elements。现在,我只想打印所有可能性,直到可能性 upto。
编辑:假设number_of_elements 是3,那么我想要所有可能的排列方式0、1 和2。 一个数字可以出现0次或多次,顺序很重要。所以0 != 00 != 01 != 10 != 11。
例如,all_combinations(3, 14) 应该打印:
0
1
2
00
01
02
10
11
12
20
21
22
000 # updated. I originally put 100 here by mistake.
001
...
我试过了:
def all_combinations(number_of_elements, upto)
0.upto upto do |n|
puts n.to_s(number_of_elements)
end
end
all_combinations(3, 10)
我的想法是获取所有整数,将它们转换为基数 number_of_elements 并将该数字解释为可能性。
它几乎可以工作,只是我缺少一些元素。
(这是我使用上面的代码得到的输出):
0
1
2
# 00 missing
# 01 missing
# 02 missing
10
11
12
20
21
22
# 0.. elements missing
100
101
...
有什么想法或其他简单的方法来获得这些吗?
【问题讨论】:
-
什么不清楚?我很乐意解释。
-
10的组合在什么意义上与01不同? -
我想要所有可能的方式来排列这 3 个字符。一个角色可以出现多次。所以
00不同于01,后者不同于10,后者不同于11。这种列举可能性的方式也许有一个词…… -
你的意思是你想要排列?如果是这样,你为什么要写组合?
-
可以,一个元素可以出现多次。
标签: ruby combinations