with open('имяфайла', 'w'):
pass
function mutators(size, seed) {
let fw = Array(size);
let bw = Array.from(fw.keys());
for (let i = 0, j; i < size; i++) {
j = (seed = seed * 16807 % 2147483647) % bw.length;
[bw[i], bw[j]] = [bw[j], bw[i]];
}
bw.forEach((i, j) => fw[i] = j);
return [fw, bw];
}
function shuffle(str, key) {
key.forEach((i, j) => key[j] = str[i]);
return key.join('');
}
let [enc, dec] = mutators(8, 42);
let s = shuffle('abcdefgh', enc);
let t = shuffle(s, dec);
console.log(s, t);
создать и сохранить файл с именем 'работаем'
пока существует файл 'работаем':
делаем итерацию своей работы
тут можно сделать что-то напоследок
удалить файл с именем 'работаем'
function shuffle(str, seed) {
let arr = str.split(''), j;
for (let i = 0; i < arr.length; i++) {
j = (seed = seed * 16807 % 2147483647) % arr.length;
[arr[i], arr[j]] = [arr[j], arr[i]];
}
return arr.join('')
}
может использовать просто смену разводки и Нарайану
function shuffle(str, seed) {
let src = str.split(''), res = [];
for (let i = src.length; i > 0; i--) {
res.push(src.splice(seed % i, 1));
// так называемый минимальный стандартный генератор случайных чисел
seed = seed * 16807 % 2147483647; // аккуратно, с нуля он не стартует )
}
return res.join('')
}
console.log(shuffle('abcdefgh', 42));
const cans = [3, 1], n = 2;
[ [ 3, 1 ] ] всего банок 1, перевес 1
[ [ 1, 2 ] ] всего банок 2, перевес 0
решается полным перебором всех вариантов.
const cans = [15, 7]; // в убывающем порядке
let n = 33;
let dp = Array(n + cans[0]).fill(0);
dp[0] = -1;
for (let can of cans) {
for (let i = dp.length - can - 1; i >= 0; i--) {
if (dp[i]) {
for (let j = i + can; j < dp.length; j += can) {
if (!dp[j]) dp[j] = can;
}
}
}
}
let res, best = dp.length;
for (let i = dp.length - 1; i >= n; i--) {
if (dp[i]) {
let j = i, total = 0, r = [];
while (j) {
let can = dp[j], cnt = 0;
for (; can == dp[j]; j -= can) cnt += 1;
total += cnt;
r.push([can, cnt])
}
if (best >= total) {
best = total;
res = r;
}
}
}
console.log(res);