El estante que se acomoda
- O(n) · Media
- Plan completo
- Python
- JavaScript
- rejillas
- textos
- índices
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):
passJavaScript
function acomodaEstante(estante) {
}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.