La pirámide de copas
- O(n²) · Muy difícil
- Plan completo
- Python
- JavaScript
- decimales
- ciclos
- listas
Enunciado
Dmitri, el mesero de la boda, apila copas en pirámide: una arriba (la fila 0), dos debajo y así; la fila r tiene r + 1 copas, numeradas desde la izquierda empezando en 0, y siempre hay filas de sobra.
Vierte arriba ponche copas de ponche (entero de 0 en adelante). Cada copa guarda 1, y lo que pase de 1 se derrama mitad y mitad: lo de la copa pos de una fila cae en las copas pos y pos + 1 de la de abajo. Una copa que no se llena no derrama nada.
Los novios brindarán con la copa pos de la fila fila (0 <= pos <= fila). Regresa qué tanto se llena, como decimal de 0 a 1: 0 si no le llega nada y 1 si queda llena, aunque le caiga más.
Con 4 copas vertidas, la de arriba guarda 1 y derrama 3: cada copa de la fila 1 recibe 1.5, guarda 1 y derrama 0.5. En la fila 2, la de en medio recibe 0.25 de cada lado y queda en 0.5, y las de las orillas reciben 0.25 cada una. Con fila 2 y pos 1 regresas 0.5.
Ejemplos
El ejemplo
4, 2, 1 → 0.5
Una copa de la orilla
4, 2, 0 → 0.25
Mitad y mitad
2, 1, 0 → 0.5
La de arriba no pasa de llena
5, 0, 0 → 1
Todavía no hay ponche
0, 0, 0 → 0
Una copa justa no derrama
1, 1, 1 → 0
Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.
Empiezas con esto
Python
def llenado(ponche, fila, pos):
passJavaScript
function llenado(ponche, fila, pos) {
}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.