Saltar al contenido

La pirámide de copas

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):
    pass

JavaScript

function llenado(ponche, fila, pos) {
}
Resolver este reto

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.

Más retos de O(n²)

Ver todos los retos →