function addWheat(blocks) {
if (blocks.length > 2 && blocks.length !== 3) {
let totalNumber = 0;
for(let i = 0; i < blocks.length; i++){
for(let z = 0; z < blocks.length; z++){
if (blocks[i] > blocks[z]) {
totalNumber += blocks[i] - blocks[z]
}
else {
i = z
}
}
}
return totalNumber
}
if (blocks.length === 3) {
if (blocks[0] > blocks[1] && blocks[1] < blocks[2]) {
const firstMinValue = Math.min(...blocks);
const indexMinValue = blocks.indexOf(firstMinValue);
blocks.splice(indexMinValue, 1);
const secondMinValue = Math.min(...blocks);
const result = secondMinValue - firstMinValue;
return result
}
}
return 0
}
console.log(addWheat([4, 1, 3])) // 2
console.log(addWheat([2, 1, 5, 2, 7, 4, 10])) // 7
console.log(addWheat([2, 0, 1, 5, 2, 7])) // 6
console.log(addWheat([2, 4, 2]))// 0
console.log(addWheat([7, 4])) // 0
console.log(addWheat([])) // 0
Тесты работают но если поставить значения, допустим [2, 1, 5, 2, 7, 4, 10, 10] или [15,9,6,10,11,2,5] то программа попадает в infinity loop, что делать?
Я решаю задачу где каждый элемент массива равен одному блоку контейнера, нужно посчитать сколько зерна влезет между блоками, нужно что бы оно не высыпалось:
Думал ставить break но не знаю как правильно или делать проверку:
if (levels.length - 1 < levels.length - 2) Но она не работает для всех вариантов когда появляется infinity loop