Мой вариант через reduce :)
let getDiet = (calorios, limit, arr=[]) =>{
calorios.reduce((a,b,i)=>(a+b>limit)?arr.push(i):a+b);
return arr[0]}
let getDiet = (calorios, limit, arr=[]) =>{
calorios.reduce((a,b,i)=>(a+b>limit)?arr.push(i):a+b);
return arr[0]}
моё решение:
var getDiet = function (callories, limCallories) {
var limit = callories.length - 1;
var numberDishes = 0;
for (var i = 0; i <= limit; i++) {
numberDishes += callories[i];
if (numberDishes > limCallories) {
limit = i;
}
}
return i - 1;
}
Без условий. И без “-1”.
var getDiet = function(calories, limitCaloriesDays) {
var sumCalories = 0;
var total = 0;
for (var i = 0; sumCalories + calories[i] <= limitCaloriesDays; i++) {
sumCalories += calories[i];
total++;
}
return total;
}
var totalCalories = 0;
var limitArr = [];
var getDiet = function(calories, limit) {
for (var i = 0; i <= calories.length - 1; i++) {
if(totalCalories + calories[i] <= limit){
totalCalories += calories[i];
limitArr.push(calories[i]);} else {
break}
}
return limitArr.length;
}
var getDiet = function (call,minCall) {
var sumCall = 0;
for (var i = 0; i <= call.length - 1; i++) {
console.log(i);
if (sumCall < minCall) {
sumCall += call[i];
console.log(sumCall);
}else{
if (sumCall > minCall) {
i--;
return i
}
return i;
}
}
}
@Hierumo как всегда элегантно))
Бессовестно стащила))) и переделала с циклом for:
const getDiet = (calories, limit) => {
for (let i = 0; calories[i] <= limit; i++) {
limit -= calories[i];
}
return i;
};
Все плохо?
var sum = 0;
var dishes = 0;
function getDiet(calories, limit) {
for (var i = 0; i < calories.length; i++) {
var index = calories[i];
sum = sum + index;
if (sum > limit) {
return dishes
} else if (sum === limit) {
dishes = dishes + 1
} else {
dishes = dishes + 1
}
}
}
Подскажите, насколько это хороший код? Например, насколько он читаемый? Это плохо или слишком плохо?) Знаю, что можно было обойтись без второго условия, как в первом комменте, но мне мой вариант намного понятнее.
var getDiet = function (calorieArray, caloriesLimit) {
var countCalories = 0;
for (var i = 0; i <= calorieArray.length -1; i++) {
if (countCalories <= caloriesLimit) {
countCalories += calorieArray[i];
if (countCalories > caloriesLimit) {
break;
}
}
}
return i;
}
Первый вариант
function getDiet (calories, limit) {
var currentСalories = 0;
var sumDishes = 0;
for (var i = 0; i < calories.length; i++ ) {
if (currentСalories < limit) {
currentСalories += calories[i]
sumDishes++;
}
}
if (currentСalories > limit) {
sumDishes--;
}
return sumDishes;
}
Второй вариант
function getDiet (calories, limit) {
var currentСalories = 0;
var sumDishes = 0;
while (currentСalories <= limit) {
currentСalories += calories[sumDishes];
sumDishes++;
}
if (currentСalories > limit) {
sumDishes--;
}
return sumDishes;
}
Третий вариант
function getDiet (calories, limit) {
var sumDishes = 0;
while (calories[sumDishes] <= limit) {
console.log('Осталось съесть '+ limit);
console.log('Съел '+ calories[sumDishes]);
limit -= calories[sumDishes];
sumDishes++;
console.log('После перекуса осталось '+ limit);
}
return sumDishes;
}
Как мне кажется понятно и просто написал в рамках изученного материала.
Извините, так и не понял как люди красиво вставляют свой код, поэтому просто паста:
let getDiet = function (dishes, limit) {
let calories = 0;
let i = 0;
while (calories < limit) {
calories += dishes[i];
i++;
}
if (calories > limit) {
i–;
};
return i;
}
Это работает.
Это нормально?)
let getDiet = function(arrayOfDishes, calorieLimit) {
let dishes = [];
let sum = 0;
for(let i = 0; i < arrayOfDishes.length; i++) {
sum += arrayOfDishes[i];
if(sum <= calorieLimit) {
i - 1;
dishes.push(arrayOfDishes[i]);
}
}
return dishes.length;
}
let getDiet = function (caloriesArr, limit) {
let quantity = 0;
let calories = 0;
while (calories + caloriesArr[quantity] <= limit) {
calories += caloriesArr[quantity];
quantity++;
}
return quantity;
}
let getDiet = function (calories, caloriesLimit) {
let dishes = 0;
let total = 0;
for (let i = 0; i < calories.length; i++) {
if (total + calories[i] > caloriesLimit) {
break;
}
dishes++;
total += calories[i];
}
return dishes;
}
Мои варианты:
let sum = 0;
let counter =0;
let getDiet = function (calorie, calorieLimit ) {
for (let i =0; sum <= calorieLimit; i++) {
sum += calorie[i];
counter++
}
console.log(sum)
return counter-1
}
И второй похожий:
let sum = 0;
let summary = [];
let getDiet = function (calorie, calorieLimit ) {
for (let i =0; sum <= calorieLimit; i++) {
sum += calorie[i];
summary[i]=calorie[i]
}
return summary.length-1
}
В первом вывел “console.log(sum)” чтобы было видно как идет вычисление и зачем нужен “-1”.
Моё решение:
let getDiet = function (array, limit) {
let sum = 0;
let quantity = 0;
for (let i = 0; i <= array.length - 1; i++) {
sum += array[i];
if(sum > limit) {
break;
}
quantity++;
}
return quantity;
}
let getDiet = function (dishes, calorieLimit) {
let countDishes = 0;
let calorie = 0;
for (let dish of dishes) {
if (calorie + dish <= calorieLimit) {
countDishes++;
calorie += dish;
} else {
break;
}
}
return countDishes
}
let getDiet = function(calorieContent, dailyCalorie) {
let sum = 0;
for (let i = 0; i <= calorieContent.length; i++) {
sum += calorieContent[i];
if (dailyCalorie < sum ) {
return i;
}
}
}
рабочий код, проходит проверку.
let getDiet = function(caloriesOfMeals, caloriesPerDay){
let sumCalories = caloriesOfMeals[0];
let count = 0;
for (let i = 1; i < caloriesOfMeals.length; i++)
if(sumCalories <= caloriesPerDay){
sumCalories += caloriesOfMeals[i];
count++
}
return count;
};
let getDiet = function (calories, dayLimit) {
let counter = 0;
for (let i = 0; i < calories.length; i++) {
dayLimit -= calories[i];
if (dayLimit >= 0) {
counter++;
}
}
return counter;
};