Je landt op de regionale luchthaven, ruim om tijd om je volgende vlucht te halen. Het lijkt er zelfs op dat je nog tijd hebt om wat te eten: alle vluchten zijn momenteel vertraagd omwille van problemen bij de bagageafhandeling.
Door een recent aangepaste regelgeving voor de luchtvaart moeten koffers (bags) en hun inhoud op heel veel regels gecontroleerd worden. Koffers moeten een kleurcode hebben en moeten specifieke hoeveelheden andere kleurgecodeerde koffers bevatten. Blijkbaar heeft niemand die verantwoordelijk was voor deze voorschriften overwogen hoe lang het zou duren om ze te handhaven!
Bekijk bijvoorbeeld de volgende regels:
light red bags contain 1 bright white bag, 2 muted yellow bags.
dark orange bags contain 3 bright white bags, 4 muted yellow bags.
bright white bags contain 1 shiny gold bag.
muted yellow bags contain 2 shiny gold bags, 9 faded blue bags.
shiny gold bags contain 1 dark olive bag, 2 vibrant plum bags.
dark olive bags contain 3 faded blue bags, 4 dotted black bags.
vibrant plum bags contain 5 faded blue bags, 6 dotted black bags.
faded blue bags contain no other bags.
dotted black bags contain no other bags.
Deze regels specificeren de vereiste inhoud voor 9 soorten koffers. In dit voorbeeld is elke faded blue
koffer leeg, bevat elke vibrant plum
koffer 11 andere koffers (5 faded blue
koffers en 6 dotted black
koffers), enzoverder.
Je hebt zelf een shiny gold
koffer. Als je ten minste één andere koffer zou willen meenemen, hoeveel verschillende kleurcodes zouden dan geldig zijn voor de buitenste koffer? (Met andere woorden: hoeveel kleuren kunnen uiteindelijk ten minste één shiny gold
koffer bevatten?)
Met bovenstaande regels heb je de volgende mogelijkheden:
bright white
koffer die rechtstreeks jouw shiny gold
koffer kan bevatten.muted yellow
koffer die rechtstreeks jouw shiny gold
koffer kan bevatten, samen met enkele andere koffers.dark orange
koffer die bright white
en muted yellow
koffers kan bevatten, die elk op hun beurt jouw shiny gold
koffer kunnen bevatten.light red
koffer die bright white
en muted yellow
koffers kan bevatten, die elk op hun beurt jouw shiny gold
koffer kunnen bevatten.In dit voorbeeld is het aantal kleurgecodeerde koffers dat uiteindelijk ten minste één shiny gold
koffer kan bevatten dus gelijk aan 4
.
Hoeveel kleurgecodeerde koffers kunnen uiteindelijk ten minste één shiny gold
koffer bevatten? (De lijst van regels is vrij lang; zorg er dus voor dat je ze allemaal in rekening brengt.) Hiervoor ga je als volgt te werk:
hold_shiny_gold
waaraan de padnaam (str
) moet doorgegeven worden van een tekstbestand dat een lijst van regels bevat, één regel per lijn. De functie moet teruggeven hoeveel (int
) kleurgecodeerde koffers uiteindelijk ten minste één shiny gold
koffer kunnen bevatten.In deze interactieve sessie gaan we ervan uit dat het tekstbestand rules.txt
1 zich in de huidige directory bevindt.
>>> hold_shiny_gold('rules.txt')
4