从 "int" 映射到相应的排列值?
Mapping from "int" to corresponding permutation value?
我今天早上运行穿过这个。
基本上这个问题是关于必须为 6 个值创建排列的数据;每个运行从 1 到 38。
所以,第一个排列是
1 1 1 1 1 1 [ permutation 1 ]
1 1 1 1 1 2 [ permutation 2 ]
1 1 1 1 1 3... [ permutation 3 ]
稍后以
结束
38 38 38 38 38 38 [ permutation 38^^6 ]
输出是由 6 个嵌套循环简单创建的,每个循环从 1 到 38;在最内层的循环中,打印 6 个循环计数器。
现在我想知道这背后的数学原理;出于好奇:
的 "function" 是什么
- 计算 "permutation index",给定任意排列 1 2 3 4 5 6
- 可能更有趣:需要一个 "index",例如 102382;并告诉我相应的排列输出
有人知道吗?
它的工作原理与改变基数(二进制、八进制或十六进制)完全一样。
第一个问题很简单:
1*38^6 + 2*38^5 + 3*38^4 + 4*38^3 +...+6*38^0
第二个反转:
102382 mod 38...递归
更新
让我们假设我们想要将 10 更改为基数 2:
10/2=5 remainder(modulus) **0**
5/2=2 remainder **1**
2/2=1 remainder **0**
1/2=0 remainder **1**
向后是1010
general 给出了一个 M 以 B 为基数进行更改,只需将 M 除以 B ,余数将成为新基数中的数字
我今天早上运行穿过这个
基本上这个问题是关于必须为 6 个值创建排列的数据;每个运行从 1 到 38。
所以,第一个排列是
1 1 1 1 1 1 [ permutation 1 ]
1 1 1 1 1 2 [ permutation 2 ]
1 1 1 1 1 3... [ permutation 3 ]
稍后以
结束38 38 38 38 38 38 [ permutation 38^^6 ]
输出是由 6 个嵌套循环简单创建的,每个循环从 1 到 38;在最内层的循环中,打印 6 个循环计数器。
现在我想知道这背后的数学原理;出于好奇:
的 "function" 是什么- 计算 "permutation index",给定任意排列 1 2 3 4 5 6
- 可能更有趣:需要一个 "index",例如 102382;并告诉我相应的排列输出
有人知道吗?
它的工作原理与改变基数(二进制、八进制或十六进制)完全一样。 第一个问题很简单: 1*38^6 + 2*38^5 + 3*38^4 + 4*38^3 +...+6*38^0 第二个反转: 102382 mod 38...递归 更新 让我们假设我们想要将 10 更改为基数 2:
10/2=5 remainder(modulus) **0**
5/2=2 remainder **1**
2/2=1 remainder **0**
1/2=0 remainder **1**
向后是1010 general 给出了一个 M 以 B 为基数进行更改,只需将 M 除以 B ,余数将成为新基数中的数字