JS Массивы. Поиск правильной комбинации, которая будет давать, нужный результат, при сложении
Предположительно есть 10 массивов, 4-ре из них участвуют в расчёте (обычное сложение элементов одного массива с другим), результат расчёта записываем в 11-й массив, сравниваем 11-й массив с 12-м с погрешностью +/- 1, если он не удолетворяет условию, просчитать следующую комбинацию. Если был найден результат, отобразить этот массив и его элементы в консоли, если нет, то сообщаем об этом. Как правильно написать?
// МАССИВЫ для расчёта
const arrayOne = [12, 10, 11, 14,];
const arrayTwo = [11, 9, 8, 6,];
const arrayThree = [5, 4, 3, 10,];
const arrayFour = [10, 8, 2, 4,];
const arrayFive = [8, 10, 12, 10,];
const arraySix = [11, 10, 6, 8,];
const arraySeven = [10, 12, 14, 14,];
const arrayEight = [8, 10, 15, 15,];
const arrayNine = [9, 11, 12, 20,];
const arrayTen = [18, 18, 19, 21,];
let arrayCalc = 4; // число массивов участвующих в расчёта (т.е. это любые массивы из предложенных, а не первые 4)
let arrResult = []; // 11-й массив
Цикл сложения элементов массивов, но нужно сделать так, чтобы количество массивов участвующих в сложении, зависело от значения в переменной arrayCalc. Т.е. соответственно если результат не удолетворяет условию, нужно подставлять другие комбинации.
for (i=0; i < arrayOne.length; i++) {
arrResult.push(arrayOne[i]+arrayTwo[i]+arrayThree[i]+arrayFour[i]+arrayFive[i]+arraySix[i]+arraySeven[i]+arrayEight[i]+arrayNine[i]+arrayTen[i]);
}
Цель заключается в поиске правильной комбинации, которая будет давать нужный результат.
Функция сравнения двух массивов с погрешностью +/- 1:
const wishArray = [35, 40, 52, 41]; // 12-й массив с которым сравниваем
function arraySrPart() {
const a = arrResult; //11-й
const b = wishArray; //12-й
let resultArray = a.every((v,idx) => Math.abs(v - b[idx]) <= 1) ? a : null;
console.log(resultArray);
}
arraySrPart();
Т.е. полагаю должно быть, что-то вроде если resultArray = null, то продолжить поиск правильной комбинации, до тех пор пока не будет найден удовлетворительный результат. Возможно есть способы и получше.