Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void main() {
- var result = integerToCode(BigInt.parse('9348079487942378923479823497823523852323552352235452342434434297834'), 52);
- var arr = List.generate(52, (ind) => ind);
- print(codeToPermutation(arr, result));
- }
- BigInt fact(int n) {
- if (n < 0) {
- throw new Exception('Argument less than 0');
- }
- BigInt param = BigInt.from(n);
- BigInt res = BigInt.from(1);
- BigInt incre = BigInt.from(1);
- for (BigInt i = BigInt.from(1); i <= param;) {
- res *= i;
- i += incre;
- }
- return res;
- }
- List<int> integerToCode(BigInt integer, permSize) {
- if (permSize <= 1) {
- return [0];
- }
- BigInt multiplier = fact(permSize - 1);
- var digit = (integer ~/ multiplier);
- return [digit.toInt()]
- ..addAll(integerToCode((integer % multiplier), permSize - 1));
- }
- List<int> codeToPermutation(List<int> elements, List<int> code) {
- return code.map((index) {
- var elem = elements[index];
- elements.removeAt(index);
- return elem;
- }).toList();
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement