Estoy haciendo este ejercicio en el que tienes que calcular la cantidad de limas necesarias para obtener el jugo. Necesita una declaración de cambio dentro de la cual se elimine el primer elemento de la matriz "limas" (y eso funciona sin problemas). Hasta que agregue la condición para contar hacia atrás las cuñas: incluso si en los casos se especifica restar una cantidad determinada, en cada iteración parece ignorarlo y nunca cumplir con la condición necesaria para romper la declaración de cambio
aquí está el código
function limesToCut(wedgesNeeded, limes) { let limesNeeded = 0 while(limes.length != 0 || wedgesNeeded > 0 ) { switch (limes[0]) { case 'small': limes.shift() limesNeeded += 1 wedgesNeeded -= 6 break; case 'medium': limes.shift() limesNeeded += 1 wedgesNeeded -= 8 break; case 'large': limes.shift() limesNeeded += 1 wedgesNeeded -= 10 break; default: break } } console.log(limesNeeded) } //test cases console.log("case 1") limesToCut(4, ['medium', 'small']) console.log("case 2") limesToCut(80,['small','large','large','medium','small','large','large',]) console.log("case 3") limesToCut(0, ['small', 'large', 'medium']) console.log("case 4") limesToCut(10, [])¿Qué hice mal? parece que no funciona incluso cuando excluyo la otra condición del ciclo
citando a @James en los comentarios: Es porque para algunos de sus casos de prueba, limes.length != 0 || wedgesNeeded > 0 siempre es verdadero, por lo que se atasca en un bucle. Considere el caso en el que necesita 80 gajos pero solo tiene 7 limas que podrían producir 70 gajos (si todos fueran del tamaño más grande). Por lo tanto, no quedan limas, sino cuñas necesarias> 0, por lo que se repite y se repite.