Als we een rij appartementen die naast elkaar staan in vooraanzicht bekijken, dan zien we dat hun aantal verdiepingen varieert. We kunnen de appartementen dus beschrijven door een reeks (list of tuple) van natuurlijke getallen (int) die aangeven hoeveel verdiepingen elk appartement telt (opgelijst van links naar rechts). Op die manier stelt $$[1, 4, 3, 2, 3, 1]$$ de volgende rij van zes appartementen voor.

gebouwen
Vooraanzicht van de rij van zes appartementen die voorgesteld wordt door de reeks $$[1, 4, 3, 2, 3, 1]$$.

Die appartementen zien er nogal grijs uit en dus besluiten we om ze te schilderen. Per verdieping schilderen we van links naar rechts zoveel mogelijk appartementen met één horizontale penseelstreek in dezelfde kleur. We kiezen telkens een nieuwe kleur als we van verdieping veranderen of als er op een verdieping een gat zit tussen twee appartementen.

penseelstreken
We hebben vijf penseelstreken nodig om de appartementen $$[1, 4, 3, 2, 3, 1]$$ in vijf verschillende kleuren te schilderen.

Als we voor de appartementen $$[1, 4, 3, 2, 3, 1]$$ van onder naar boven werken, dan schilderen we met een eerste penseelstreek de onderste verdieping van de zes appartementen in het blauw. Met een tweede penseelstreek schilderen we de tweede verdieping van vier appartementen in het geel. De derde penseelstreek bedekt de derde verdieping van twee appartementen in het paars en met een vierde penseelstreek schilderen we de derde verdieping van nog één appartement in het groen. Ten slotte hebben we nog een vijfde penseelstreek nodig om de vierde verdieping van één appartement in het oranje te zetten. In totaal hebben we dus vijf penseelstreken nodig om alle appartementen in vijf verschillende kleuren te schilderen.

Opgave

We stellen een rij appartementen voor door een reeks (list of tuple) natuurlijke getallen (int) die het aantal verdiepingen van elk appartement aanduiden (opgelijst van links naar rechts). Gevraagd wordt:

Voorbeeld

>>> appartementen = (1, 4, 3, 2, 3, 1)
>>> verdiepingen(appartementen)
[[False, True, False, False, False, False], [False, True, True, False, True, False], [False, True, True, True, True, False], [True, True, True, True, True, True]]

>>> print(vooraanzicht(appartementen, lucht='~'))
~~~~###~~~~~~~~~~~~~~~~
~~~~###~###~~~~~###~~~~
~~~~###~###~###~###~~~~
###~###~###~###~###~###
>>> print(vooraanzicht(appartementen, breedte=4, afstand=0, appartement='<', lucht="-"))
----<<<<----------------
----<<<<<<<<----<<<<----
----<<<<<<<<<<<<<<<<----
<<<<<<<<<<<<<<<<<<<<<<<<

>>> penseelstreken(appartementen)
5