如何查找设置了数组长度和最大整数值的整数数组的所有唯一值

时间:2018-09-27 20:11:33

标签: arrays haskell math

我正在尝试编写一个函数,该函数将生成数组的所有唯一组合,以获取不超过一定数量的值。

该函数有两个参数,一个参数是数组的长度,另一个参数是整数的最大大小。

F(4, 3)是一个函数,它将在三个整数数组中生成小于或等于4的正整数的所有可能唯一组合。 F(10, 100)将在100整数数组中生成所有小于或等于10的正整数的所有可能唯一组合。

F(4, 3)的结果将像这样开始:

(1, 1, 1), (1, 1, 2), (1, 1, 3), (1, 1, 4), (1, 2, 1), (1, 2, 2) ... (4, 4, 4)

F(10, 10)会像这样:

(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), (1, 1, 1, 1, 1, 1, 1, 1, 1, 2), ... (10, 10, 10, 10, 10, 10, 10, 10, 10, 10)

1 个答案:

答案 0 :(得分:1)

P=Max**LenF(Max, Len)个数组,范围0..P-1中的数字和数组之间存在双射。

因此,您可以遍历该范围内的所有数字,并以M-ric数字系统表示循环计数器(第一个示例中的计数器4(dec)对应于(1、2、1))

另一种方法-使用数组作为多位计数器(例如带有旋转圆柱体的旧电表显示)。当某个数字变为“最大”并应递增时,它将重置为1,而下一个数字将递增(在您的示例中为{(1, 1, 4) => (1, 2, 1))。