Saltar al contenido

El estante que se acomoda

Enunciado

Nayeli acomoda su papelería antes de cerrar. En el estante, cada casilla tiene una caja o está vacía, y ella quiere ver cómo queda todo cuando las cajas se van hasta abajo: ninguna caja cambia de columna, cada una nada más baja hasta que se topa con el fondo del estante o con otra caja. Escribe una función que reciba estante, una lista de textos del mismo largo: el primer texto es el renglón de arriba y el último el de abajo, # es una caja y . una casilla vacía. El estante mide a lo más 8 renglones por 8 casillas, y puede venir vacío o con renglones vacíos. Regresa una lista de textos nueva, del mismo tamaño, con las cajas ya caídas.

Con ["#.#", "..#", ".#."] la primera columna trae una caja y la segunda otra, y las dos terminan en el renglón de abajo; la tercera trae dos, que terminan en los dos renglones de abajo. Regresas ["...", "..#", "###"].

Ejemplos

  • El ejemplo

    ["#.#", "..#", ".#."] → ["...", "..#", "###"]

  • El estante sin cajas

    ["...", "...", "..."] → ["...", "...", "..."]

  • El estante lleno

    ["###", "###", "###"] → ["###", "###", "###"]

  • Ya estaba acomodado

    ["...", "..#", "###"] → ["...", "..#", "###"]

  • Una sola caja hasta arriba

    ["#..", "...", "..."] → ["...", "...", "#.."]

  • Un estante de un solo renglón

    ["#.#"] → ["#.#"]

  • Un estante de una sola columna

    ["#", ".", "#", "."] → [".", ".", "#", "#"]

  • Dos cajas separadas en la misma columna

    ["#..", "...", "#..", ".#."] → ["...", "...", "#..", "##."]

Además de estas, el reto tiene pruebas ocultas que se revelan al enviar tu solución.

Empiezas con esto

Python

def acomoda_estante(estante):
    pass

JavaScript

function acomodaEstante(estante) {
}
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 →