Open fasiha opened 5 years ago
Basic sketch, proof of concept, showing both ascending and descending operation:
"use strict";
function bigIntToDigits(x, base) {
let ret = [];
while (x > 0) {
ret.push(x % base);
x /= base;
}
ret.reverse();
return ret;
}
function bigIntSubdivide(l, r, n, base) {
while ((r - l) / n === 0n) {
r *= base;
l *= base;
}
let delta = (r - l) / n;
let ret = [];
let nNumber = Number(n);
{
let prev = l;
for (let i = 0; i < nNumber; i++) {
let next = prev + delta;
ret.push(next);
prev = next;
}
}
return ret;
}
function digits2bigint(arr, base) {
arr = arr.map(BigInt);
let ret = 0n;
let pow = 1n;
for (let i = arr.length - 1; i >= 0; --i) {
ret += arr[i] * pow;
pow *= base;
}
return ret;
}
function makeUniqueNumArr(vov, left) {
vov.forEach((arr, i) => {
const prev = vov[i - 1] || left;
const hit = arr.findIndex((n, i) => n !== prev[i]);
if (hit >= 0) { vov[i] = vov[i].slice(0, hit + 1); }
});
return vov;
}
function main(left, right, numStringsNumber, num2sym, shorten = true) {
let sym2num = new Map(num2sym.map((sym, i) => [sym, i]));
let base = BigInt(num2sym.length);
const str2digits = s => s.split('').map(c => sym2num.get(c));
let flipped = left > right;
if (flipped) { [left, right] = [right, left]; }
let maxLen = Math.max(left.length, right.length);
let bigintarr = bigIntSubdivide(
digits2bigint(str2digits(num2sym[1] + left + num2sym[0].repeat(maxLen - left.length)), base),
digits2bigint(str2digits(num2sym[1] + right + num2sym[0].repeat(maxLen - right.length)), base),
BigInt(numStringsNumber),
base,
);
if (!shorten) {
if (flipped) { bigintarr.reverse(); }
return bigintarr.map(n => bigIntToDigits(n, base).slice(1).map(n => num2sym[n]).join(''));
}
let ret = makeUniqueNumArr(bigintarr.map(n => bigIntToDigits(n, base).slice(1).map(n => num2sym[n])), left.split(''))
.map(v => v.join(''));
if (flipped) { ret.reverse(); }
return ret;
}
function checkAsc(v) {
if (!v.every((s, i) => (!i) || v[i - 1] < s)) { throw new Error('invalid'); }
}
function checkDesc(v) {
if (!v.every((s, i) => (!i) || v[i - 1] > s)) { throw new Error('invalid'); }
}
if (require.main === module) {
let num2sym = '0123456789abcdef'.split('');
let left = '03a';
let right = '2';
let numStrings = 1000;
let mudder = require('./index');
let hex = new mudder.SymbolTable(num2sym);
for (let i = 0; i < 2; i++) {
if (i > 0) { [left, right] = [right, left]; }
let sameLength = main(left, right, numStrings, num2sym, false);
let shortAsPossible = main(left, right, numStrings, num2sym, true);
let gold = hex.mudder(left, right, Number(numStrings));
console.log('\n\nBigIntSameLen\tBigIntShort\tMudder');
console.log(gold.map((gold, i) => [sameLength[i], shortAsPossible[i], gold].join('\t')).join('\n'));
let check = (left < right) ? checkAsc : checkDesc;
check(sameLength);
check(shortAsPossible);
check(gold);
}
}
Outputs:
BigIntSameLen BigIntShort Mudder
03a7 03a7 03a7
03ae 03ae 03ae
03b5 03b 03b
03bc 03bc 03bd
03c3 03c 03c
03ca 03ca 03cb
03d1 03d 03d
03d8 03d8 03da
03df 03df 03e
03e6 03e 03e8
03ed 03ed 03ef
03f4 03f 03f
03fb 03fb 03fe
0402 04 04
0409 040 040c
0410 041 041
0417 0417 041b
041e 041e 042
0425 042 0429
042c 042c 043
0433 043 0438
043a 043a 043f
0441 044 044
0448 0448 044e
044f 044f 045
0456 045 045c
045d 045d 046
0464 046 046b
046b 046b 047
0472 047 0479
0479 0479 048
0480 048 0488
0487 0487 048f
048e 048e 049
0495 049 049d
049c 049c 04a
04a3 04a 04ac
04aa 04aa 04b
04b1 04b 04bb
04b8 04b8 04c
04bf 04bf 04c9
04c6 04c 04d
04cd 04cd 04d8
04d4 04d 04df
04db 04db 04e
04e2 04e 04ed
04e9 04e9 04f
04f0 04f 04fc
04f7 04f7 05
04fe 04fe 050a
0505 05 051
050c 050 0519
0513 051 052
051a 051a 0527
0521 052 052f
0528 0528 053
052f 052f 053d
0536 053 054
053d 053d 054c
0544 054 055
054b 054b 055a
0552 055 056
0559 0559 0569
0560 056 057
0567 0567 0577
056e 056e 057e
0575 057 058
057c 057c 058d
0583 058 059
058a 058a 059b
0591 059 05a
0598 0598 05aa
059f 059f 05b
05a6 05a 05b9
05ad 05ad 05c
05b4 05b 05c7
05bb 05bb 05ce
05c2 05c 05d
05c9 05c9 05dd
05d0 05d 05e
05d7 05d7 05eb
05de 05de 05f
05e5 05e 05fa
05ec 05ec 06
05f3 05f 0608
05fa 05fa 061
0601 06 0617
0608 060 061e
060f 060f 062
0616 061 062d
061d 061d 063
0624 062 063b
062b 062b 064
0632 063 064a
0639 0639 065
0640 064 0658
0647 0647 065f
064e 064e 066
0655 065 066e
065c 065c 067
0663 066 067c
066a 066a 068
0671 067 068b
0678 0678 069
067f 067f 0699
0686 068 06a
068d 068d 06a8
0694 069 06af
069b 069b 06b
06a2 06a 06be
06a9 06a9 06c
06b0 06b 06cc
06b7 06b7 06d
06be 06be 06db
06c5 06c 06e
06cc 06cc 06e9
06d3 06d 06f
06da 06da 06f8
06e1 06e 06ff
06e8 06e8 07
06ef 06ef 070e
06f6 06f 071
06fd 06fd 071c
0704 07 072
070b 070 072b
0712 071 073
0719 0719 0739
0720 072 074
0727 0727 0748
072e 072e 074f
0735 073 075
073c 073c 075d
0743 074 076
074a 074a 076c
0751 075 077
0758 0758 077a
075f 075f 078
0766 076 0789
076d 076d 079
0774 077 0797
077b 077b 079f
0782 078 07a
0789 0789 07ad
0790 079 07b
0797 0797 07bc
079e 079e 07c
07a5 07a 07ca
07ac 07ac 07d
07b3 07b 07d9
07ba 07ba 07e
07c1 07c 07e7
07c8 07c8 07ef
07cf 07cf 07f
07d6 07d 07fd
07dd 07dd 08
07e4 07e 080c
07eb 07eb 081
07f2 07f 081a
07f9 07f9 082
0800 08 0829
0807 080 083
080e 080e 0837
0815 081 083e
081c 081c 084
0823 082 084d
082a 082a 085
0831 083 085b
0838 0838 086
083f 083f 086a
0846 084 087
084d 084d 0878
0854 085 088
085b 085b 0887
0862 086 088e
0869 0869 089
0870 087 089d
0877 0877 08a
087e 087e 08ab
0885 088 08b
088c 088c 08ba
0893 089 08c
089a 089a 08c8
08a1 08a 08cf
08a8 08a8 08d
08af 08af 08de
08b6 08b 08e
08bd 08bd 08ed
08c4 08c 08f
08cb 08cb 08fb
08d2 08d 09
08d9 08d9 090a
08e0 08e 091
08e7 08e7 0918
08ee 08ee 091f
08f5 08f 092
08fc 08fc 092e
0903 09 093
090a 090 093c
0911 091 094
0918 0918 094b
091f 091f 095
0926 092 0959
092d 092d 096
0934 093 0968
093b 093b 096f
0942 094 097
0949 0949 097e
0950 095 098
0957 0957 098c
095e 095e 099
0965 096 099b
096c 096c 09a
0973 097 09a9
097a 097a 09b
0981 098 09b8
0988 0988 09bf
098f 098f 09c
0996 099 09cd
099d 099d 09d
09a4 09a 09dc
09ab 09ab 09e
09b2 09b 09ea
09b9 09b9 09f
09c0 09c 09f9
09c7 09c7 0a
09ce 09ce 0a08
09d5 09d 0a0f
09dc 09dc 0a1
09e3 09e 0a1d
09ea 09ea 0a2
09f1 09f 0a2c
09f8 09f8 0a3
09ff 09ff 0a3a
0a06 0a 0a4
0a0d 0a0 0a49
0a14 0a1 0a5
0a1b 0a1b 0a57
0a22 0a2 0a5f
0a29 0a29 0a6
0a30 0a3 0a6d
0a37 0a37 0a7
0a3e 0a3e 0a7c
0a45 0a4 0a8
0a4c 0a4c 0a8a
0a53 0a5 0a9
0a5a 0a5a 0a99
0a61 0a6 0aa
0a68 0a68 0aa7
0a6f 0a6f 0aae
0a76 0a7 0ab
0a7d 0a7d 0abd
0a84 0a8 0ac
0a8b 0a8b 0acb
0a92 0a9 0ad
0a99 0a99 0ada
0aa0 0aa 0ae
0aa7 0aa7 0ae8
0aae 0aae 0af
0ab5 0ab 0af7
0abc 0abc 0afe
0ac3 0ac 0b
0aca 0aca 0b0d
0ad1 0ad 0b1
0ad8 0ad8 0b1b
0adf 0adf 0b2
0ae6 0ae 0b2a
0aed 0aed 0b3
0af4 0af 0b38
0afb 0afb 0b4
0b02 0b 0b47
0b09 0b0 0b4e
0b10 0b1 0b5
0b17 0b17 0b5d
0b1e 0b1e 0b6
0b25 0b2 0b6b
0b2c 0b2c 0b7
0b33 0b3 0b7a
0b3a 0b3a 0b8
0b41 0b4 0b88
0b48 0b48 0b8f
0b4f 0b4f 0b9
0b56 0b5 0b9e
0b5d 0b5d 0ba
0b64 0b6 0bac
0b6b 0b6b 0bb
0b72 0b7 0bbb
0b79 0b79 0bc
0b80 0b8 0bc9
0b87 0b87 0bd
0b8e 0b8e 0bd8
0b95 0b9 0bdf
0b9c 0b9c 0be
0ba3 0ba 0bee
0baa 0baa 0bf
0bb1 0bb 0bfc
0bb8 0bb8 0c
0bbf 0bbf 0c0b
0bc6 0bc 0c1
0bcd 0bcd 0c19
0bd4 0bd 0c2
0bdb 0bdb 0c28
0be2 0be 0c2f
0be9 0be9 0c3
0bf0 0bf 0c3e
0bf7 0bf7 0c4
0bfe 0bfe 0c4c
0c05 0c 0c5
0c0c 0c0 0c5b
0c13 0c1 0c6
0c1a 0c1a 0c69
0c21 0c2 0c7
0c28 0c28 0c78
0c2f 0c2f 0c7f
0c36 0c3 0c8
0c3d 0c3d 0c8d
0c44 0c4 0c9
0c4b 0c4b 0c9c
0c52 0c5 0ca
0c59 0c59 0caa
0c60 0c6 0cb
0c67 0c67 0cb9
0c6e 0c6e 0cc
0c75 0c7 0cc7
0c7c 0c7c 0ccf
0c83 0c8 0cd
0c8a 0c8a 0cdd
0c91 0c9 0ce
0c98 0c98 0cec
0c9f 0c9f 0cf
0ca6 0ca 0cfa
0cad 0cad 0d
0cb4 0cb 0d09
0cbb 0cbb 0d1
0cc2 0cc 0d17
0cc9 0cc9 0d1f
0cd0 0cd 0d2
0cd7 0cd7 0d2d
0cde 0cde 0d3
0ce5 0ce 0d3c
0cec 0cec 0d4
0cf3 0cf 0d4a
0cfa 0cfa 0d5
0d01 0d 0d59
0d08 0d0 0d6
0d0f 0d0f 0d67
0d16 0d1 0d6e
0d1d 0d1d 0d7
0d24 0d2 0d7d
0d2b 0d2b 0d8
0d32 0d3 0d8b
0d39 0d39 0d9
0d40 0d4 0d9a
0d47 0d47 0da
0d4e 0d4e 0da8
0d55 0d5 0db
0d5c 0d5c 0db7
0d63 0d6 0dbe
0d6a 0d6a 0dc
0d71 0d7 0dcd
0d78 0d78 0dd
0d7f 0d7f 0ddb
0d86 0d8 0de
0d8d 0d8d 0dea
0d94 0d9 0df
0d9b 0d9b 0df8
0da2 0da 0dff
0da9 0da9 0e
0db0 0db 0e0e
0db7 0db7 0e1
0dbe 0dbe 0e1c
0dc5 0dc 0e2
0dcc 0dcc 0e2b
0dd3 0dd 0e3
0dda 0dda 0e3a
0de1 0de 0e4
0de8 0de8 0e48
0def 0def 0e4f
0df6 0df 0e5
0dfd 0dfd 0e5e
0e04 0e 0e6
0e0b 0e0 0e6c
0e12 0e1 0e7
0e19 0e19 0e7b
0e20 0e2 0e8
0e27 0e27 0e89
0e2e 0e2e 0e9
0e35 0e3 0e98
0e3c 0e3c 0e9f
0e43 0e4 0ea
0e4a 0e4a 0eae
0e51 0e5 0eb
0e58 0e58 0ebc
0e5f 0e5f 0ec
0e66 0e6 0ecb
0e6d 0e6d 0ed
0e74 0e7 0ed9
0e7b 0e7b 0ee
0e82 0e8 0ee8
0e89 0e89 0eef
0e90 0e9 0ef
0e97 0e97 0efd
0e9e 0e9e 0f
0ea5 0ea 0f0c
0eac 0eac 0f1
0eb3 0eb 0f1a
0eba 0eba 0f2
0ec1 0ec 0f29
0ec8 0ec8 0f3
0ecf 0ecf 0f38
0ed6 0ed 0f3f
0edd 0edd 0f4
0ee4 0ee 0f4d
0eeb 0eeb 0f5
0ef2 0ef 0f5c
0ef9 0ef9 0f6
0f00 0f 0f6a
0f07 0f0 0f7
0f0e 0f0e 0f79
0f15 0f1 0f8
0f1c 0f1c 0f87
0f23 0f2 0f8f
0f2a 0f2a 0f9
0f31 0f3 0f9d
0f38 0f38 0fa
0f3f 0f3f 0fac
0f46 0f4 0fb
0f4d 0f4d 0fba
0f54 0f5 0fc
0f5b 0f5b 0fc9
0f62 0f6 0fd
0f69 0f69 0fd7
0f70 0f7 0fde
0f77 0f77 0fe
0f7e 0f7e 0fed
0f85 0f8 0ff
0f8c 0f8c 0ffb
0f93 0f9 1
0f9a 0f9a 100a
0fa1 0fa 101
0fa8 0fa8 1018
0faf 0faf 102
0fb6 0fb 1027
0fbd 0fbd 102e
0fc4 0fc 103
0fcb 0fcb 103d
0fd2 0fd 104
0fd9 0fd9 104b
0fe0 0fe 105
0fe7 0fe7 105a
0fee 0fee 106
0ff5 0ff 1068
0ffc 0ffc 107
1003 1 1077
100a 10 107e
1011 101 108
1018 1018 108d
101f 101f 109
1026 102 109b
102d 102d 10a
1034 103 10aa
103b 103b 10b
1042 104 10b8
1049 1049 10bf
1050 105 10c
1057 1057 10ce
105e 105e 10d
1065 106 10dc
106c 106c 10e
1073 107 10eb
107a 107a 10f
1081 108 10f9
1088 1088 11
108f 108f 1108
1096 109 110f
109d 109d 111
10a4 10a 111e
10ab 10ab 112
10b2 10b 112c
10b9 10b9 113
10c0 10c 113b
10c7 10c7 114
10ce 10ce 1149
10d5 10d 115
10dc 10dc 1158
10e3 10e 115f
10ea 10ea 116
10f1 10f 116e
10f8 10f8 117
10ff 10ff 117c
1106 11 118
110d 110 118b
1114 111 119
111b 111b 1199
1122 112 11a
1129 1129 11a8
1130 113 11af
1137 1137 11b
113e 113e 11bd
1145 114 11c
114c 114c 11cc
1153 115 11d
115a 115a 11da
1161 116 11e
1168 1168 11e9
116f 116f 11f
1176 117 11f7
117d 117d 11ff
1184 118 12
118b 118b 120d
1192 119 121
1199 1199 121c
11a0 11a 122
11a7 11a7 122a
11ae 11ae 123
11b5 11b 1239
11bc 11bc 124
11c3 11c 1247
11ca 11ca 124e
11d1 11d 125
11d8 11d8 125d
11df 11df 126
11e6 11e 126c
11ed 11ed 127
11f4 11f 127a
11fb 11fb 128
1202 12 1289
1209 120 129
1210 121 1297
1217 1217 129e
121e 121e 12a
1225 122 12ad
122c 122c 12b
1233 123 12bb
123a 123a 12c
1241 124 12ca
1248 1248 12d
124f 124f 12d8
1256 125 12e
125d 125d 12e7
1264 126 12ee
126b 126b 12f
1272 127 12fd
1279 1279 13
1280 128 130b
1287 1287 131
128e 128e 131a
1295 129 132
129c 129c 1328
12a3 12a 132f
12aa 12aa 133
12b1 12b 133e
12b8 12b8 134
12bf 12bf 134c
12c6 12c 135
12cd 12cd 135b
12d4 12d 136
12db 12db 136a
12e2 12e 137
12e9 12e9 1378
12f0 12f 137f
12f7 12f7 138
12fe 12fe 138e
1305 13 139
130c 130 139c
1313 131 13a
131a 131a 13ab
1321 132 13b
1328 1328 13b9
132f 132f 13c
1336 133 13c8
133d 133d 13cf
1344 134 13d
134b 134b 13de
1352 135 13e
1359 1359 13ec
1360 136 13f
1367 1367 13fb
136e 136e 14
1375 137 1409
137c 137c 141
1383 138 1418
138a 138a 141f
1391 139 142
1398 1398 142d
139f 139f 143
13a6 13a 143c
13ad 13ad 144
13b4 13b 144a
13bb 13bb 145
13c2 13c 1459
13c9 13c9 146
13d0 13d 1467
13d7 13d7 146f
13de 13de 147
13e5 13e 147d
13ec 13ec 148
13f3 13f 148c
13fa 13fa 149
1401 14 149a
1408 140 14a
140f 140f 14a9
1416 141 14b
141d 141d 14b7
1424 142 14bf
142b 142b 14c
1432 143 14cd
1439 1439 14d
1440 144 14dc
1447 1447 14e
144e 144e 14ea
1455 145 14f
145c 145c 14f9
1463 146 15
146a 146a 1507
1471 147 150e
1478 1478 151
147f 147f 151d
1486 148 152
148d 148d 152b
1494 149 153
149b 149b 153a
14a2 14a 154
14a9 14a9 1548
14b0 14b 155
14b7 14b7 1557
14be 14be 155e
14c5 14c 156
14cc 14cc 156d
14d3 14d 157
14da 14da 157b
14e1 14e 158
14e8 14e8 158a
14ef 14ef 159
14f6 14f 1598
14fd 14fd 15a
1504 15 15a7
150b 150 15ae
1512 151 15b
1519 1519 15bd
1520 152 15c
1527 1527 15cb
152e 152e 15d
1535 153 15da
153c 153c 15e
1543 154 15e8
154a 154a 15ef
1551 155 15f
1558 1558 15fe
155f 155f 16
1566 156 160c
156d 156d 161
1574 157 161b
157b 157b 162
1582 158 1629
1589 1589 163
1590 159 1638
1597 1597 163f
159e 159e 164
15a5 15a 164e
15ac 15ac 165
15b3 15b 165c
15ba 15ba 166
15c1 15c 166b
15c8 15c8 167
15cf 15cf 1679
15d6 15d 168
15dd 15dd 1688
15e4 15e 168f
15eb 15eb 169
15f2 15f 169e
15f9 15f9 16a
1600 16 16ac
1607 160 16b
160e 160e 16bb
1615 161 16c
161c 161c 16c9
1623 162 16d
162a 162a 16d8
1631 163 16df
1638 1638 16e
163f 163f 16ed
1646 164 16f
164d 164d 16fc
1654 165 17
165b 165b 170a
1662 166 171
1669 1669 1719
1670 167 172
1677 1677 1727
167e 167e 172f
1685 168 173
168c 168c 173d
1693 169 174
169a 169a 174c
16a1 16a 175
16a8 16a8 175a
16af 16af 176
16b6 16b 1769
16bd 16bd 177
16c4 16c 1777
16cb 16cb 177e
16d2 16d 178
16d9 16d9 178d
16e0 16e 179
16e7 16e7 179c
16ee 16ee 17a
16f5 16f 17aa
16fc 16fc 17b
1703 17 17b9
170a 170 17c
1711 171 17c7
1718 1718 17ce
171f 171f 17d
1726 172 17dd
172d 172d 17e
1734 173 17eb
173b 173b 17f
1742 174 17fa
1749 1749 18
1750 175 1808
1757 1757 181
175e 175e 1817
1765 176 181e
176c 176c 182
1773 177 182d
177a 177a 183
1781 178 183b
1788 1788 184
178f 178f 184a
1796 179 185
179d 179d 1858
17a4 17a 185f
17ab 17ab 186
17b2 17b 186e
17b9 17b9 187
17c0 17c 187c
17c7 17c7 188
17ce 17ce 188b
17d5 17d 189
17dc 17dc 1899
17e3 17e 18a
17ea 17ea 18a8
17f1 17f 18af
17f8 17f8 18b
17ff 17ff 18be
1806 18 18c
180d 180 18cc
1814 181 18d
181b 181b 18db
1822 182 18e
1829 1829 18e9
1830 183 18f
1837 1837 18f8
183e 183e 18ff
1845 184 19
184c 184c 190e
1853 185 191
185a 185a 191c
1861 186 192
1868 1868 192b
186f 186f 193
1876 187 1939
187d 187d 194
1884 188 1948
188b 188b 194f
1892 189 195
1899 1899 195d
18a0 18a 196
18a7 18a7 196c
18ae 18ae 197
18b5 18b 197a
18bc 18bc 198
18c3 18c 1989
18ca 18ca 199
18d1 18d 1997
18d8 18d8 199f
18df 18df 19a
18e6 18e 19ad
18ed 18ed 19b
18f4 18f 19bc
18fb 18fb 19c
1902 19 19ca
1909 190 19d
1910 191 19d9
1917 1917 19e
191e 191e 19e7
1925 192 19ef
192c 192c 19f
1933 193 19fd
193a 193a 1a
1941 194 1a0c
1948 1948 1a1
194f 194f 1a1a
1956 195 1a2
195d 195d 1a29
1964 196 1a3
196b 196b 1a37
1972 197 1a3e
1979 1979 1a4
1980 198 1a4d
1987 1987 1a5
198e 198e 1a5b
1995 199 1a6
199c 199c 1a6a
19a3 19a 1a7
19aa 19aa 1a78
19b1 19b 1a8
19b8 19b8 1a87
19bf 19bf 1a8e
19c6 19c 1a9
19cd 19cd 1a9d
19d4 19d 1aa
19db 19db 1aab
19e2 19e 1ab
19e9 19e9 1aba
19f0 19f 1ac
19f7 19f7 1ac8
19fe 19fe 1ad
1a05 1a 1ad7
1a0c 1a0 1ade
1a13 1a1 1ae
1a1a 1a1a 1aed
1a21 1a2 1af
1a28 1a28 1afb
1a2f 1a2f 1b
1a36 1a3 1b0a
1a3d 1a3d 1b1
1a44 1a4 1b18
1a4b 1a4b 1b1f
1a52 1a5 1b2
1a59 1a59 1b2e
1a60 1a6 1b3
1a67 1a67 1b3c
1a6e 1a6e 1b4
1a75 1a7 1b4b
1a7c 1a7c 1b5
1a83 1a8 1b59
1a8a 1a8a 1b6
1a91 1a9 1b68
1a98 1a98 1b6f
1a9f 1a9f 1b7
1aa6 1aa 1b7e
1aad 1aad 1b8
1ab4 1ab 1b8c
1abb 1abb 1b9
1ac2 1ac 1b9b
1ac9 1ac9 1ba
1ad0 1ad 1ba9
1ad7 1ad7 1bb
1ade 1ade 1bb8
1ae5 1ae 1bbf
1aec 1aec 1bc
1af3 1af 1bce
1afa 1afa 1bd
1b01 1b 1bdc
1b08 1b0 1be
1b0f 1b0f 1beb
1b16 1b1 1bf
1b1d 1b1d 1bf9
1b24 1b2 1c
1b2b 1b2b 1c08
1b32 1b3 1c0f
1b39 1b39 1c1
1b40 1b4 1c1d
1b47 1b47 1c2
1b4e 1b4e 1c2c
1b55 1b5 1c3
1b5c 1b5c 1c3a
1b63 1b6 1c4
1b6a 1b6a 1c49
1b71 1b7 1c5
1b78 1b78 1c57
1b7f 1b7f 1c5f
1b86 1b8 1c6
1b8d 1b8d 1c6d
1b94 1b9 1c7
1b9b 1b9b 1c7c
1ba2 1ba 1c8
1ba9 1ba9 1c8a
1bb0 1bb 1c9
1bb7 1bb7 1c99
1bbe 1bbe 1ca
1bc5 1bc 1ca7
1bcc 1bcc 1cae
1bd3 1bd 1cb
1bda 1bda 1cbd
1be1 1be 1cc
1be8 1be8 1ccb
1bef 1bef 1cd
1bf6 1bf 1cda
1bfd 1bfd 1ce
1c04 1c 1ce9
1c0b 1c0 1cf
1c12 1c1 1cf7
1c19 1c19 1cfe
1c20 1c2 1d
1c27 1c27 1d0d
1c2e 1c2e 1d1
1c35 1c3 1d1b
1c3c 1c3c 1d2
1c43 1c4 1d2a
1c4a 1c4a 1d3
1c51 1c5 1d38
1c58 1c58 1d4
1c5f 1c5f 1d47
1c66 1c6 1d4e
1c6d 1c6d 1d5
1c74 1c7 1d5d
1c7b 1c7b 1d6
1c82 1c8 1d6b
1c89 1c89 1d7
1c90 1c9 1d7a
1c97 1c97 1d8
1c9e 1c9e 1d88
1ca5 1ca 1d8f
1cac 1cac 1d9
1cb3 1cb 1d9e
1cba 1cba 1da
1cc1 1cc 1dac
1cc8 1cc8 1db
1ccf 1ccf 1dbb
1cd6 1cd 1dc
1cdd 1cdd 1dc9
1ce4 1ce 1dd
1ceb 1ceb 1dd8
1cf2 1cf 1ddf
1cf9 1cf9 1de
1d00 1d 1dee
1d07 1d0 1df
1d0e 1d0e 1dfc
1d15 1d1 1e
1d1c 1d1c 1e0b
1d23 1d2 1e1
1d2a 1d2a 1e19
1d31 1d3 1e2
1d38 1d38 1e28
1d3f 1d3f 1e2f
1d46 1d4 1e3
1d4d 1d4d 1e3e
1d54 1d5 1e4
1d5b 1d5b 1e4c
1d62 1d6 1e5
1d69 1d69 1e5b
1d70 1d7 1e6
1d77 1d77 1e69
1d7e 1d7e 1e7
1d85 1d8 1e78
1d8c 1d8c 1e7f
1d93 1d9 1e8
1d9a 1d9a 1e8d
1da1 1da 1e9
1da8 1da8 1e9c
1daf 1daf 1ea
1db6 1db 1eaa
1dbd 1dbd 1eb
1dc4 1dc 1eb9
1dcb 1dcb 1ec
1dd2 1dd 1ec7
1dd9 1dd9 1ecf
1de0 1de 1ed
1de7 1de7 1edd
1dee 1dee 1ee
1df5 1df 1eec
1dfc 1dfc 1ef
1e03 1e 1efa
1e0a 1e0 1f
1e11 1e1 1f09
1e18 1e18 1f1
1e1f 1e1f 1f17
1e26 1e2 1f1f
1e2d 1e2d 1f2
1e34 1e3 1f2d
1e3b 1e3b 1f3
1e42 1e4 1f3c
1e49 1e49 1f4
1e50 1e5 1f4a
1e57 1e57 1f5
1e5e 1e5e 1f59
1e65 1e6 1f6
1e6c 1e6c 1f67
1e73 1e7 1f6e
1e7a 1e7a 1f7
1e81 1e8 1f7d
1e88 1e88 1f8
1e8f 1e8f 1f8b
1e96 1e9 1f9
1e9d 1e9d 1f9a
1ea4 1ea 1fa
1eab 1eab 1fa8
1eb2 1eb 1fb
1eb9 1eb9 1fb7
1ec0 1ec 1fbe
1ec7 1ec7 1fc
1ece 1ece 1fcd
1ed5 1ed 1fd
1edc 1edc 1fdb
1ee3 1ee 1fe
1eea 1eea 1fea
1ef1 1ef 1ff
1ef8 1ef8 1ff8
BigIntSameLen BigIntShort Mudder
1ef8 1ef8 1ff8
1ef1 1ef 1ff
1eea 1eea 1fea
1ee3 1ee 1fe
1edc 1edc 1fdb
1ed5 1ed 1fd
1ece 1ece 1fcd
1ec7 1ec7 1fc
1ec0 1ec 1fbe
1eb9 1eb9 1fb7
1eb2 1eb 1fb
1eab 1eab 1fa8
1ea4 1ea 1fa
1e9d 1e9d 1f9a
1e96 1e9 1f9
1e8f 1e8f 1f8b
1e88 1e88 1f8
1e81 1e8 1f7d
1e7a 1e7a 1f7
1e73 1e7 1f6e
1e6c 1e6c 1f67
1e65 1e6 1f6
1e5e 1e5e 1f59
1e57 1e57 1f5
1e50 1e5 1f4a
1e49 1e49 1f4
1e42 1e4 1f3c
1e3b 1e3b 1f3
1e34 1e3 1f2d
1e2d 1e2d 1f2
1e26 1e2 1f1f
1e1f 1e1f 1f17
1e18 1e18 1f1
1e11 1e1 1f09
1e0a 1e0 1f
1e03 1e 1efa
1dfc 1dfc 1ef
1df5 1df 1eec
1dee 1dee 1ee
1de7 1de7 1edd
1de0 1de 1ed
1dd9 1dd9 1ecf
1dd2 1dd 1ec7
1dcb 1dcb 1ec
1dc4 1dc 1eb9
1dbd 1dbd 1eb
1db6 1db 1eaa
1daf 1daf 1ea
1da8 1da8 1e9c
1da1 1da 1e9
1d9a 1d9a 1e8d
1d93 1d9 1e8
1d8c 1d8c 1e7f
1d85 1d8 1e78
1d7e 1d7e 1e7
1d77 1d77 1e69
1d70 1d7 1e6
1d69 1d69 1e5b
1d62 1d6 1e5
1d5b 1d5b 1e4c
1d54 1d5 1e4
1d4d 1d4d 1e3e
1d46 1d4 1e3
1d3f 1d3f 1e2f
1d38 1d38 1e28
1d31 1d3 1e2
1d2a 1d2a 1e19
1d23 1d2 1e1
1d1c 1d1c 1e0b
1d15 1d1 1e
1d0e 1d0e 1dfc
1d07 1d0 1df
1d00 1d 1dee
1cf9 1cf9 1de
1cf2 1cf 1ddf
1ceb 1ceb 1dd8
1ce4 1ce 1dd
1cdd 1cdd 1dc9
1cd6 1cd 1dc
1ccf 1ccf 1dbb
1cc8 1cc8 1db
1cc1 1cc 1dac
1cba 1cba 1da
1cb3 1cb 1d9e
1cac 1cac 1d9
1ca5 1ca 1d8f
1c9e 1c9e 1d88
1c97 1c97 1d8
1c90 1c9 1d7a
1c89 1c89 1d7
1c82 1c8 1d6b
1c7b 1c7b 1d6
1c74 1c7 1d5d
1c6d 1c6d 1d5
1c66 1c6 1d4e
1c5f 1c5f 1d47
1c58 1c58 1d4
1c51 1c5 1d38
1c4a 1c4a 1d3
1c43 1c4 1d2a
1c3c 1c3c 1d2
1c35 1c3 1d1b
1c2e 1c2e 1d1
1c27 1c27 1d0d
1c20 1c2 1d
1c19 1c19 1cfe
1c12 1c1 1cf7
1c0b 1c0 1cf
1c04 1c 1ce9
1bfd 1bfd 1ce
1bf6 1bf 1cda
1bef 1bef 1cd
1be8 1be8 1ccb
1be1 1be 1cc
1bda 1bda 1cbd
1bd3 1bd 1cb
1bcc 1bcc 1cae
1bc5 1bc 1ca7
1bbe 1bbe 1ca
1bb7 1bb7 1c99
1bb0 1bb 1c9
1ba9 1ba9 1c8a
1ba2 1ba 1c8
1b9b 1b9b 1c7c
1b94 1b9 1c7
1b8d 1b8d 1c6d
1b86 1b8 1c6
1b7f 1b7f 1c5f
1b78 1b78 1c57
1b71 1b7 1c5
1b6a 1b6a 1c49
1b63 1b6 1c4
1b5c 1b5c 1c3a
1b55 1b5 1c3
1b4e 1b4e 1c2c
1b47 1b47 1c2
1b40 1b4 1c1d
1b39 1b39 1c1
1b32 1b3 1c0f
1b2b 1b2b 1c08
1b24 1b2 1c
1b1d 1b1d 1bf9
1b16 1b1 1bf
1b0f 1b0f 1beb
1b08 1b0 1be
1b01 1b 1bdc
1afa 1afa 1bd
1af3 1af 1bce
1aec 1aec 1bc
1ae5 1ae 1bbf
1ade 1ade 1bb8
1ad7 1ad7 1bb
1ad0 1ad 1ba9
1ac9 1ac9 1ba
1ac2 1ac 1b9b
1abb 1abb 1b9
1ab4 1ab 1b8c
1aad 1aad 1b8
1aa6 1aa 1b7e
1a9f 1a9f 1b7
1a98 1a98 1b6f
1a91 1a9 1b68
1a8a 1a8a 1b6
1a83 1a8 1b59
1a7c 1a7c 1b5
1a75 1a7 1b4b
1a6e 1a6e 1b4
1a67 1a67 1b3c
1a60 1a6 1b3
1a59 1a59 1b2e
1a52 1a5 1b2
1a4b 1a4b 1b1f
1a44 1a4 1b18
1a3d 1a3d 1b1
1a36 1a3 1b0a
1a2f 1a2f 1b
1a28 1a28 1afb
1a21 1a2 1af
1a1a 1a1a 1aed
1a13 1a1 1ae
1a0c 1a0 1ade
1a05 1a 1ad7
19fe 19fe 1ad
19f7 19f7 1ac8
19f0 19f 1ac
19e9 19e9 1aba
19e2 19e 1ab
19db 19db 1aab
19d4 19d 1aa
19cd 19cd 1a9d
19c6 19c 1a9
19bf 19bf 1a8e
19b8 19b8 1a87
19b1 19b 1a8
19aa 19aa 1a78
19a3 19a 1a7
199c 199c 1a6a
1995 199 1a6
198e 198e 1a5b
1987 1987 1a5
1980 198 1a4d
1979 1979 1a4
1972 197 1a3e
196b 196b 1a37
1964 196 1a3
195d 195d 1a29
1956 195 1a2
194f 194f 1a1a
1948 1948 1a1
1941 194 1a0c
193a 193a 1a
1933 193 19fd
192c 192c 19f
1925 192 19ef
191e 191e 19e7
1917 1917 19e
1910 191 19d9
1909 190 19d
1902 19 19ca
18fb 18fb 19c
18f4 18f 19bc
18ed 18ed 19b
18e6 18e 19ad
18df 18df 19a
18d8 18d8 199f
18d1 18d 1997
18ca 18ca 199
18c3 18c 1989
18bc 18bc 198
18b5 18b 197a
18ae 18ae 197
18a7 18a7 196c
18a0 18a 196
1899 1899 195d
1892 189 195
188b 188b 194f
1884 188 1948
187d 187d 194
1876 187 1939
186f 186f 193
1868 1868 192b
1861 186 192
185a 185a 191c
1853 185 191
184c 184c 190e
1845 184 19
183e 183e 18ff
1837 1837 18f8
1830 183 18f
1829 1829 18e9
1822 182 18e
181b 181b 18db
1814 181 18d
180d 180 18cc
1806 18 18c
17ff 17ff 18be
17f8 17f8 18b
17f1 17f 18af
17ea 17ea 18a8
17e3 17e 18a
17dc 17dc 1899
17d5 17d 189
17ce 17ce 188b
17c7 17c7 188
17c0 17c 187c
17b9 17b9 187
17b2 17b 186e
17ab 17ab 186
17a4 17a 185f
179d 179d 1858
1796 179 185
178f 178f 184a
1788 1788 184
1781 178 183b
177a 177a 183
1773 177 182d
176c 176c 182
1765 176 181e
175e 175e 1817
1757 1757 181
1750 175 1808
1749 1749 18
1742 174 17fa
173b 173b 17f
1734 173 17eb
172d 172d 17e
1726 172 17dd
171f 171f 17d
1718 1718 17ce
1711 171 17c7
170a 170 17c
1703 17 17b9
16fc 16fc 17b
16f5 16f 17aa
16ee 16ee 17a
16e7 16e7 179c
16e0 16e 179
16d9 16d9 178d
16d2 16d 178
16cb 16cb 177e
16c4 16c 1777
16bd 16bd 177
16b6 16b 1769
16af 16af 176
16a8 16a8 175a
16a1 16a 175
169a 169a 174c
1693 169 174
168c 168c 173d
1685 168 173
167e 167e 172f
1677 1677 1727
1670 167 172
1669 1669 1719
1662 166 171
165b 165b 170a
1654 165 17
164d 164d 16fc
1646 164 16f
163f 163f 16ed
1638 1638 16e
1631 163 16df
162a 162a 16d8
1623 162 16d
161c 161c 16c9
1615 161 16c
160e 160e 16bb
1607 160 16b
1600 16 16ac
15f9 15f9 16a
15f2 15f 169e
15eb 15eb 169
15e4 15e 168f
15dd 15dd 1688
15d6 15d 168
15cf 15cf 1679
15c8 15c8 167
15c1 15c 166b
15ba 15ba 166
15b3 15b 165c
15ac 15ac 165
15a5 15a 164e
159e 159e 164
1597 1597 163f
1590 159 1638
1589 1589 163
1582 158 1629
157b 157b 162
1574 157 161b
156d 156d 161
1566 156 160c
155f 155f 16
1558 1558 15fe
1551 155 15f
154a 154a 15ef
1543 154 15e8
153c 153c 15e
1535 153 15da
152e 152e 15d
1527 1527 15cb
1520 152 15c
1519 1519 15bd
1512 151 15b
150b 150 15ae
1504 15 15a7
14fd 14fd 15a
14f6 14f 1598
14ef 14ef 159
14e8 14e8 158a
14e1 14e 158
14da 14da 157b
14d3 14d 157
14cc 14cc 156d
14c5 14c 156
14be 14be 155e
14b7 14b7 1557
14b0 14b 155
14a9 14a9 1548
14a2 14a 154
149b 149b 153a
1494 149 153
148d 148d 152b
1486 148 152
147f 147f 151d
1478 1478 151
1471 147 150e
146a 146a 1507
1463 146 15
145c 145c 14f9
1455 145 14f
144e 144e 14ea
1447 1447 14e
1440 144 14dc
1439 1439 14d
1432 143 14cd
142b 142b 14c
1424 142 14bf
141d 141d 14b7
1416 141 14b
140f 140f 14a9
1408 140 14a
1401 14 149a
13fa 13fa 149
13f3 13f 148c
13ec 13ec 148
13e5 13e 147d
13de 13de 147
13d7 13d7 146f
13d0 13d 1467
13c9 13c9 146
13c2 13c 1459
13bb 13bb 145
13b4 13b 144a
13ad 13ad 144
13a6 13a 143c
139f 139f 143
1398 1398 142d
1391 139 142
138a 138a 141f
1383 138 1418
137c 137c 141
1375 137 1409
136e 136e 14
1367 1367 13fb
1360 136 13f
1359 1359 13ec
1352 135 13e
134b 134b 13de
1344 134 13d
133d 133d 13cf
1336 133 13c8
132f 132f 13c
1328 1328 13b9
1321 132 13b
131a 131a 13ab
1313 131 13a
130c 130 139c
1305 13 139
12fe 12fe 138e
12f7 12f7 138
12f0 12f 137f
12e9 12e9 1378
12e2 12e 137
12db 12db 136a
12d4 12d 136
12cd 12cd 135b
12c6 12c 135
12bf 12bf 134c
12b8 12b8 134
12b1 12b 133e
12aa 12aa 133
12a3 12a 132f
129c 129c 1328
1295 129 132
128e 128e 131a
1287 1287 131
1280 128 130b
1279 1279 13
1272 127 12fd
126b 126b 12f
1264 126 12ee
125d 125d 12e7
1256 125 12e
124f 124f 12d8
1248 1248 12d
1241 124 12ca
123a 123a 12c
1233 123 12bb
122c 122c 12b
1225 122 12ad
121e 121e 12a
1217 1217 129e
1210 121 1297
1209 120 129
1202 12 1289
11fb 11fb 128
11f4 11f 127a
11ed 11ed 127
11e6 11e 126c
11df 11df 126
11d8 11d8 125d
11d1 11d 125
11ca 11ca 124e
11c3 11c 1247
11bc 11bc 124
11b5 11b 1239
11ae 11ae 123
11a7 11a7 122a
11a0 11a 122
1199 1199 121c
1192 119 121
118b 118b 120d
1184 118 12
117d 117d 11ff
1176 117 11f7
116f 116f 11f
1168 1168 11e9
1161 116 11e
115a 115a 11da
1153 115 11d
114c 114c 11cc
1145 114 11c
113e 113e 11bd
1137 1137 11b
1130 113 11af
1129 1129 11a8
1122 112 11a
111b 111b 1199
1114 111 119
110d 110 118b
1106 11 118
10ff 10ff 117c
10f8 10f8 117
10f1 10f 116e
10ea 10ea 116
10e3 10e 115f
10dc 10dc 1158
10d5 10d 115
10ce 10ce 1149
10c7 10c7 114
10c0 10c 113b
10b9 10b9 113
10b2 10b 112c
10ab 10ab 112
10a4 10a 111e
109d 109d 111
1096 109 110f
108f 108f 1108
1088 1088 11
1081 108 10f9
107a 107a 10f
1073 107 10eb
106c 106c 10e
1065 106 10dc
105e 105e 10d
1057 1057 10ce
1050 105 10c
1049 1049 10bf
1042 104 10b8
103b 103b 10b
1034 103 10aa
102d 102d 10a
1026 102 109b
101f 101f 109
1018 1018 108d
1011 101 108
100a 10 107e
1003 1 1077
0ffc 0ffc 107
0ff5 0ff 1068
0fee 0fee 106
0fe7 0fe7 105a
0fe0 0fe 105
0fd9 0fd9 104b
0fd2 0fd 104
0fcb 0fcb 103d
0fc4 0fc 103
0fbd 0fbd 102e
0fb6 0fb 1027
0faf 0faf 102
0fa8 0fa8 1018
0fa1 0fa 101
0f9a 0f9a 100a
0f93 0f9 1
0f8c 0f8c 0ffb
0f85 0f8 0ff
0f7e 0f7e 0fed
0f77 0f77 0fe
0f70 0f7 0fde
0f69 0f69 0fd7
0f62 0f6 0fd
0f5b 0f5b 0fc9
0f54 0f5 0fc
0f4d 0f4d 0fba
0f46 0f4 0fb
0f3f 0f3f 0fac
0f38 0f38 0fa
0f31 0f3 0f9d
0f2a 0f2a 0f9
0f23 0f2 0f8f
0f1c 0f1c 0f87
0f15 0f1 0f8
0f0e 0f0e 0f79
0f07 0f0 0f7
0f00 0f 0f6a
0ef9 0ef9 0f6
0ef2 0ef 0f5c
0eeb 0eeb 0f5
0ee4 0ee 0f4d
0edd 0edd 0f4
0ed6 0ed 0f3f
0ecf 0ecf 0f38
0ec8 0ec8 0f3
0ec1 0ec 0f29
0eba 0eba 0f2
0eb3 0eb 0f1a
0eac 0eac 0f1
0ea5 0ea 0f0c
0e9e 0e9e 0f
0e97 0e97 0efd
0e90 0e9 0ef
0e89 0e89 0eef
0e82 0e8 0ee8
0e7b 0e7b 0ee
0e74 0e7 0ed9
0e6d 0e6d 0ed
0e66 0e6 0ecb
0e5f 0e5f 0ec
0e58 0e58 0ebc
0e51 0e5 0eb
0e4a 0e4a 0eae
0e43 0e4 0ea
0e3c 0e3c 0e9f
0e35 0e3 0e98
0e2e 0e2e 0e9
0e27 0e27 0e89
0e20 0e2 0e8
0e19 0e19 0e7b
0e12 0e1 0e7
0e0b 0e0 0e6c
0e04 0e 0e6
0dfd 0dfd 0e5e
0df6 0df 0e5
0def 0def 0e4f
0de8 0de8 0e48
0de1 0de 0e4
0dda 0dda 0e3a
0dd3 0dd 0e3
0dcc 0dcc 0e2b
0dc5 0dc 0e2
0dbe 0dbe 0e1c
0db7 0db7 0e1
0db0 0db 0e0e
0da9 0da9 0e
0da2 0da 0dff
0d9b 0d9b 0df8
0d94 0d9 0df
0d8d 0d8d 0dea
0d86 0d8 0de
0d7f 0d7f 0ddb
0d78 0d78 0dd
0d71 0d7 0dcd
0d6a 0d6a 0dc
0d63 0d6 0dbe
0d5c 0d5c 0db7
0d55 0d5 0db
0d4e 0d4e 0da8
0d47 0d47 0da
0d40 0d4 0d9a
0d39 0d39 0d9
0d32 0d3 0d8b
0d2b 0d2b 0d8
0d24 0d2 0d7d
0d1d 0d1d 0d7
0d16 0d1 0d6e
0d0f 0d0f 0d67
0d08 0d0 0d6
0d01 0d 0d59
0cfa 0cfa 0d5
0cf3 0cf 0d4a
0cec 0cec 0d4
0ce5 0ce 0d3c
0cde 0cde 0d3
0cd7 0cd7 0d2d
0cd0 0cd 0d2
0cc9 0cc9 0d1f
0cc2 0cc 0d17
0cbb 0cbb 0d1
0cb4 0cb 0d09
0cad 0cad 0d
0ca6 0ca 0cfa
0c9f 0c9f 0cf
0c98 0c98 0cec
0c91 0c9 0ce
0c8a 0c8a 0cdd
0c83 0c8 0cd
0c7c 0c7c 0ccf
0c75 0c7 0cc7
0c6e 0c6e 0cc
0c67 0c67 0cb9
0c60 0c6 0cb
0c59 0c59 0caa
0c52 0c5 0ca
0c4b 0c4b 0c9c
0c44 0c4 0c9
0c3d 0c3d 0c8d
0c36 0c3 0c8
0c2f 0c2f 0c7f
0c28 0c28 0c78
0c21 0c2 0c7
0c1a 0c1a 0c69
0c13 0c1 0c6
0c0c 0c0 0c5b
0c05 0c 0c5
0bfe 0bfe 0c4c
0bf7 0bf7 0c4
0bf0 0bf 0c3e
0be9 0be9 0c3
0be2 0be 0c2f
0bdb 0bdb 0c28
0bd4 0bd 0c2
0bcd 0bcd 0c19
0bc6 0bc 0c1
0bbf 0bbf 0c0b
0bb8 0bb8 0c
0bb1 0bb 0bfc
0baa 0baa 0bf
0ba3 0ba 0bee
0b9c 0b9c 0be
0b95 0b9 0bdf
0b8e 0b8e 0bd8
0b87 0b87 0bd
0b80 0b8 0bc9
0b79 0b79 0bc
0b72 0b7 0bbb
0b6b 0b6b 0bb
0b64 0b6 0bac
0b5d 0b5d 0ba
0b56 0b5 0b9e
0b4f 0b4f 0b9
0b48 0b48 0b8f
0b41 0b4 0b88
0b3a 0b3a 0b8
0b33 0b3 0b7a
0b2c 0b2c 0b7
0b25 0b2 0b6b
0b1e 0b1e 0b6
0b17 0b17 0b5d
0b10 0b1 0b5
0b09 0b0 0b4e
0b02 0b 0b47
0afb 0afb 0b4
0af4 0af 0b38
0aed 0aed 0b3
0ae6 0ae 0b2a
0adf 0adf 0b2
0ad8 0ad8 0b1b
0ad1 0ad 0b1
0aca 0aca 0b0d
0ac3 0ac 0b
0abc 0abc 0afe
0ab5 0ab 0af7
0aae 0aae 0af
0aa7 0aa7 0ae8
0aa0 0aa 0ae
0a99 0a99 0ada
0a92 0a9 0ad
0a8b 0a8b 0acb
0a84 0a8 0ac
0a7d 0a7d 0abd
0a76 0a7 0ab
0a6f 0a6f 0aae
0a68 0a68 0aa7
0a61 0a6 0aa
0a5a 0a5a 0a99
0a53 0a5 0a9
0a4c 0a4c 0a8a
0a45 0a4 0a8
0a3e 0a3e 0a7c
0a37 0a37 0a7
0a30 0a3 0a6d
0a29 0a29 0a6
0a22 0a2 0a5f
0a1b 0a1b 0a57
0a14 0a1 0a5
0a0d 0a0 0a49
0a06 0a 0a4
09ff 09ff 0a3a
09f8 09f8 0a3
09f1 09f 0a2c
09ea 09ea 0a2
09e3 09e 0a1d
09dc 09dc 0a1
09d5 09d 0a0f
09ce 09ce 0a08
09c7 09c7 0a
09c0 09c 09f9
09b9 09b9 09f
09b2 09b 09ea
09ab 09ab 09e
09a4 09a 09dc
099d 099d 09d
0996 099 09cd
098f 098f 09c
0988 0988 09bf
0981 098 09b8
097a 097a 09b
0973 097 09a9
096c 096c 09a
0965 096 099b
095e 095e 099
0957 0957 098c
0950 095 098
0949 0949 097e
0942 094 097
093b 093b 096f
0934 093 0968
092d 092d 096
0926 092 0959
091f 091f 095
0918 0918 094b
0911 091 094
090a 090 093c
0903 09 093
08fc 08fc 092e
08f5 08f 092
08ee 08ee 091f
08e7 08e7 0918
08e0 08e 091
08d9 08d9 090a
08d2 08d 09
08cb 08cb 08fb
08c4 08c 08f
08bd 08bd 08ed
08b6 08b 08e
08af 08af 08de
08a8 08a8 08d
08a1 08a 08cf
089a 089a 08c8
0893 089 08c
088c 088c 08ba
0885 088 08b
087e 087e 08ab
0877 0877 08a
0870 087 089d
0869 0869 089
0862 086 088e
085b 085b 0887
0854 085 088
084d 084d 0878
0846 084 087
083f 083f 086a
0838 0838 086
0831 083 085b
082a 082a 085
0823 082 084d
081c 081c 084
0815 081 083e
080e 080e 0837
0807 080 083
0800 08 0829
07f9 07f9 082
07f2 07f 081a
07eb 07eb 081
07e4 07e 080c
07dd 07dd 08
07d6 07d 07fd
07cf 07cf 07f
07c8 07c8 07ef
07c1 07c 07e7
07ba 07ba 07e
07b3 07b 07d9
07ac 07ac 07d
07a5 07a 07ca
079e 079e 07c
0797 0797 07bc
0790 079 07b
0789 0789 07ad
0782 078 07a
077b 077b 079f
0774 077 0797
076d 076d 079
0766 076 0789
075f 075f 078
0758 0758 077a
0751 075 077
074a 074a 076c
0743 074 076
073c 073c 075d
0735 073 075
072e 072e 074f
0727 0727 0748
0720 072 074
0719 0719 0739
0712 071 073
070b 070 072b
0704 07 072
06fd 06fd 071c
06f6 06f 071
06ef 06ef 070e
06e8 06e8 07
06e1 06e 06ff
06da 06da 06f8
06d3 06d 06f
06cc 06cc 06e9
06c5 06c 06e
06be 06be 06db
06b7 06b7 06d
06b0 06b 06cc
06a9 06a9 06c
06a2 06a 06be
069b 069b 06b
0694 069 06af
068d 068d 06a8
0686 068 06a
067f 067f 0699
0678 0678 069
0671 067 068b
066a 066a 068
0663 066 067c
065c 065c 067
0655 065 066e
064e 064e 066
0647 0647 065f
0640 064 0658
0639 0639 065
0632 063 064a
062b 062b 064
0624 062 063b
061d 061d 063
0616 061 062d
060f 060f 062
0608 060 061e
0601 06 0617
05fa 05fa 061
05f3 05f 0608
05ec 05ec 06
05e5 05e 05fa
05de 05de 05f
05d7 05d7 05eb
05d0 05d 05e
05c9 05c9 05dd
05c2 05c 05d
05bb 05bb 05ce
05b4 05b 05c7
05ad 05ad 05c
05a6 05a 05b9
059f 059f 05b
0598 0598 05aa
0591 059 05a
058a 058a 059b
0583 058 059
057c 057c 058d
0575 057 058
056e 056e 057e
0567 0567 0577
0560 056 057
0559 0559 0569
0552 055 056
054b 054b 055a
0544 054 055
053d 053d 054c
0536 053 054
052f 052f 053d
0528 0528 053
0521 052 052f
051a 051a 0527
0513 051 052
050c 050 0519
0505 05 051
04fe 04fe 050a
04f7 04f7 05
04f0 04f 04fc
04e9 04e9 04f
04e2 04e 04ed
04db 04db 04e
04d4 04d 04df
04cd 04cd 04d8
04c6 04c 04d
04bf 04bf 04c9
04b8 04b8 04c
04b1 04b 04bb
04aa 04aa 04b
04a3 04a 04ac
049c 049c 04a
0495 049 049d
048e 048e 049
0487 0487 048f
0480 048 0488
0479 0479 048
0472 047 0479
046b 046b 047
0464 046 046b
045d 045d 046
0456 045 045c
044f 044f 045
0448 0448 044e
0441 044 044
043a 043a 043f
0433 043 0438
042c 042c 043
0425 042 0429
041e 041e 042
0417 0417 041b
0410 041 041
0409 040 040c
0402 04 04
03fb 03fb 03fe
03f4 03f 03f
03ed 03ed 03ef
03e6 03e 03e8
03df 03df 03e
03d8 03d8 03da
03d1 03d 03d
03ca 03ca 03cb
03c3 03c 03c
03bc 03bc 03bd
03b5 03b 03b
03ae 03ae 03ae
03a7 03a7 03a7
Using the above proof-of-concept code, generating 20'000 strings between '03a' and '2' in hexadecimal symbol table:
Certainly we should offer this for BigInt-enabled runtimes, with the fallback to the existing manual big-int-like implementation available.
I know this is an old issue, but just a heads up - the above implementation can be buggy, especially around lower values of n
:
> main("03a", "2", 1, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(''))
[ '2' ] // bug - array contains value of right
> main("03a", "2", 2, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(''))
[ '1', '2' ] // bug - array contains value of right
> main("03a", "2", 3, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(''))
[ '0h', '1', '1z' ] //fine
This can be fixed by updating bigintSubdivide
:
function bigIntSubdivide(l, r, n, base) {
let divisor = n + 1n; //avoids situation where (delta * n) + l == r
while ((r - l) / divisor === 0n) {
r *= base;
l *= base;
}
let delta = (r - l) / divisor;
let ret = [];
let nNumber = Number(n);
{
let prev = l;
for (let i = 0; i < nNumber; i++) {
let next = prev + delta;
ret.push(next);
prev = next;
}
}
return ret;
}
New outputs:
> main("03a", "2", 1, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(''))
[ '1' ]
> main("03a", "2", 2, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(''))
[ '0h', '1' ]
> main("03a", "2", 3, "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz".split(''))
[ '0X', '1', '1V' ]
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/BigInt
Available in Chrome/Node now. In Firefox beta. WIP in Safari per https://wingolog.org/archives/2019/05/23/bigint-shipping-in-firefox