Vi Veri Veniversum Vivus Vici
Пусть требуется распределить некую сумму по частям в массиве, притом каждая часть в массиве должна достаточно сильно отличаться от другой.
В примере части отличаются в 1,5 раза от предыдущей, помноженного на индекс элемента (без такого умножения разница межу соседями будет значительно меньшей)
Первая функция считает вес первого элемента, а вторая - проверяет корректность подсчетов
В примере части отличаются в 1,5 раза от предыдущей, помноженного на индекс элемента (без такого умножения разница межу соседями будет значительно меньшей)
Первая функция считает вес первого элемента, а вторая - проверяет корректность подсчетов
function t(arr) { var d = 1, x = 1, i = 1, len = arr.length; for (; i < len; i++) { x *= 1.5; d += x * i; } d = len / d; return d; } function test(d, arr, s) { var i = 0, x = 0, k, len = arr.length, w = s / arr.length, wp = 0; console.log('w = ' + w); for (; i < len; i++) { if (!i) { k = d; } else { k = i * Math.pow(1.5, i) * d; } console.log('k = ' + k); console.log('chunk for ' + i + ' is ' + k * w); wp += k * w; x += k; console.log('x = ' + x); } console.log('wp = ' + wp); return x; } var sum = 6, a = [0, 1, 2], delta = t(a); console.log(delta); console.log(test(delta, a, sum));