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:

In dit voorbeeld is het aantal kleurgecodeerde koffers dat uiteindelijk ten minste één shiny gold koffer kan bevatten dus gelijk aan 4.

Opgave

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:

Voorbeeld

In deze interactieve sessie gaan we ervan uit dat het tekstbestand rules.txt1 zich in de huidige directory bevindt.

>>> hold_shiny_gold('rules.txt')
4

Epiloog

Glanzende gouden koffer.