Stel dat je een 2D rechthoekig rooster hebt, sommige cellen bevatten een ‘appel’ a, anderen zijn leeg " ". De grond wordt voorgesteld via een #, er is altijd een laag grond onderaan in het rooster.

Implementeer een simulatie van de zwaartekracht, zodat alle appels recht naar beneden vallen, mogelijks op elkaar gestapeld.

Vallende appels.

Gevraagd

Schrijf een functie appels(rooster) die gegeven een ingevuld rooster de uiteindelijke situatie bepaalt.

Bestudeer grondig onderstaande voorbeelden.

Voorbeeld

>>> appels([[" ", " ", " ", "a", "a"],
            ["a", " ", "a", " ", " "],
            ["a", " ", "a", "a", " "],
            [" ", " ", "a", " ", " "],
            [" ", " ", " ", "a", "#"],
            [" ", "#", "#", " ", "#"],
            ["#", "#", "#", "#", "#"]])
[[" ", " ", " ", " ", " "],
 [" ", " ", " ", " ", " "],
 [" ", " ", "a", " ", " "],
 [" ", " ", "a", "a", "a"],
 ["a", " ", "a", "a", "#"],
 ["a", "#", "#", "a", "#"],
 ["#", "#", "#", "#", "#"]]

Bron

Gebaseerd op probleem Falling apples, ICPC Mid-Central Regional (2016).