Vliegen wordt tegenwoordig behoorlijk duur — niet vanwege de ticketprijzen, maar vanwege het belachelijk aantal koffers dat je moet kopen!
Denk opnieuw aan jouw shiny gold
koffer en de regels uit de vorige opgave:
faded blue
koffers bevatten 0
andere koffers.dotted black
koffers bevatten 0
andere koffers.vibrant plum
koffers bevatten 11
andere koffers: 5 faded blue
koffers en 6 dotted black
koffers.dark olive
koffers bevatten 7
andere koffers: 3 faded blue
koffers en 4 dotted black
koffers.Dus, één enkele shiny gold
koffer bevat 1 dark olive
koffer (en de 7 koffers daarin) plus 2 vibrant plum
koffers (en de 11 koffers in elk daarvan): 1 + 1*7 + 2 + 2*11
= 32
koffers!
Natuurlijk bestaat er ook een kleine kans dat de regels nog meer niveaus dieper gaan dan in dit voorbeeld. Vergeet dus niet alle koffers te tellen, zelfs als het nesten topologisch gezien zeer onpraktisch zou worden!
Hier is nog een voorbeeld:
shiny gold bags contain 2 dark red bags.
dark red bags contain 2 dark orange bags.
dark orange bags contain 2 dark yellow bags.
dark yellow bags contain 2 dark green bags.
dark green bags contain 2 dark blue bags.
dark blue bags contain 2 dark violet bags.
dark violet bags contain no other bags.
In dit voorbeeld moet één enkele shiny gold
koffer 126
koffers bevatten.
Hoeveel individuele koffers moet jouw ene shiny gold
koffer bevatten? Hiervoor ga je als volgt te werk:
shinyGoldSize
waaraan de padnaam (String
) moet doorgegeven worden van een tekstbestand dat een lijst van regels bevat, één regel per lijn. De functie moet teruggeven hoeveel (Int
) individuele koffers jouw ene shiny gold
koffer moet bevatten.In deze interactieve sessie gaan we ervan uit dat de tekstbestanden rules1.txt
1 en rules2.txt
2 zich in de huidige directory bevinden.
> shinyGoldSize "rules1.txt"
32
> shinyGoldSize "rules2.txt"
126