let getDiet = function (data, limit) {
let allovedSum = 0;
let counter = 0;
for (let i = 0; allovedSum <= limit; i++){
allovedSum += data[i];
counter = i;
}
return counter;
}
let getDiet = function(food, dayLimit) {
let foodEatenCalories = 0;
let amount = 0
for (let i = 0; foodEatenCalories <= dayLimit; i++) {
foodEatenCalories += food[i];
amount = i;
}
return amount
}
Сделал, а потом посмотрел как сделали другие. Вариантов решения данной задачи удивила))
let getDiet = function(arrayMeals, calories){
let caloriesMeals = 0;
let countMeals = 0;
for(let i = 0; i < arrayMeals.length; i++){
caloriesMeals += arrayMeals[i]
if(caloriesMeals <= calories){
countMeals += 1
}
}
return countMeals
}
Я что-то совсем по минималкам пошел)
let getDiet = function (dishesCal, maxCal) {
for (let i = 0; i < dishesCal.length; i++) {
if (maxCal - dishesCal[i] < 0) {
return i
}
maxCal = maxCal - dishesCal[i];
}
}
Мое решение
function getDiet(calDish, calLimit) {
let i = 0;
while (calLimit >= calDish[i]) {
calLimit -= calDish[i];
i++;
}
return i;
}
function getDiet(caloriesArr, limit) {
let caloriesTotal = 0;
for (let i = 0; i < caloriesArr.length; i++) {
caloriesTotal += caloriesArr[i]
if (caloriesTotal > limit) return i
}
}
Вариант с методом (reduce/reduceRight) , как пример, всё равно разбираться с методами всем придётся. Вот и я вникаю.
- Подробный вариант:
function getDiet (arr, limit) {
let dishesQty = 1
arr.reduce((cal, el) => {
if (cal + el <= limit) {
dishesQty++
return cal + el
}
return cal
})
return dishesQty
}
- Короткий вариант:
const getDiet = (arr, limit) => {
let count = 1
arr.reduce((cal, el) => cal+el <= limit ? count++ && cal+el : cal)
return count
}
1 лайк