La barra de vida
- O(n) · Media
- Plan completo
- Python
- JavaScript
- listas
- ciclos
- condicionales
Enunciado
En Pixelia, una poción nunca llena la barra de vida más allá del máximo: lo que sobra se pierde. El héroe empieza con la barra llena y en cada turno recibe un golpe o toma una poción.
Escribe una función que reciba maximo (entero de 1 en adelante) y cambios, una lista de enteros (negativo es golpe y positivo es poción; puede venir vacía). Aplica los cambios en orden: suma cada uno a la vida y, si pasa de maximo, déjala en maximo en ese mismo paso. Regresa el índice del cambio con el que la vida llega a 0 o menos, o -1 si nunca llega. Los índices empiezan en 0, y lo que viene después no importa.
Con 10 y [-4, 8, -7, -3], la vida va 6, luego 14 que se queda en 10, luego 3 y luego 0. Llegar a 0 ya es caer: regresa 3. Si no recortaras en cada paso, habría llegado al final con 4 y sobrevivido.
Ejemplos
El del ejemplo
10, [-4, 8, -7, -3] → 3
Sobrevive
20, [-5, -5, 3, -10] → -1
Cae abajo de 0 y después se cura
5, [-2, -4, 6] → 1
Poción con la barra llena
8, [5, -8] → 1
Dos pociones que se desperdician
10, [-3, 5, 5, -9, -2] → 4
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def golpe_fatal(maximo, cambios):
passJavaScript
function golpeFatal(maximo, cambios) {
}Se abre en el navegador, con el editor y las pruebas. Este reto es del plan completo; los de O(1) y O(log n) son gratis.