Je bereikt de laatste halte van de trein. Dat is meteen ook het dichtste punt bij je vakantie-eiland dat je kan bereiken zonder nat te worden. Er zijn hier zelfs geen boten, maar niets kun je nu nog stoppen: je bouwt een vlot. Je hebt alleen maar een paar dagen aan voedsel nodig voor je reis.

Je spreekt de lokale taal niet, en dus kun je de ingrediëntenlijsten niet lezen. Soms worden allergenen vermeld in een taal die je wel begrijpt. Je zou deze informatie kunnen gebruiken om te bepalen welk ingrediënt welk allergeen bevat en om te bepalen welke voedingsmiddelen geschikt zijn om mee te nemen op reis.

Je begint met het samenstellen van een lijst met voedingsmiddelen (de invoer van deze opgave), waarbij elk voedingsmiddel op een afzonderlijke regel staat. Elke regel bevat de ingrediëntenlijst van een voedingsmiddel, gevolgd door enkele of alle allergenen die het voedingsmiddel bevat.

Elk allergeen zit in precies één ingrediënt. Elk ingrediënt bevat nul of één allergeen. Allergenen zijn niet altijd aangeduid. Wanneer ze vermeld worden (zoals in (contains nuts, shellfish) na een lijst van ingrediënten), staat alle ingrediënten die de vermelde allergenen bevatten ergens in de bijhorende ingrediëntenlijst. Maar zels als een allergeen niet vermeld wordt, kan het ingrediënt dat dat allergeen bevat nog steeds aanwezig zijn: misschien zijn ze het vergeten te etiketteren, of misschien is het geëtiketteerd in een taal die je niet kent.

Neem bijvoorbeeld de volgende lijst met voedingsmiddelen:

mxmxvkd kfcds sqjhc nhms (contains dairy, fish)
trh fvjkl sbzzf mxmxvkd (contains dairy)
sqjhc fvjkl (contains soy)
sqjhc mxmxvkd sbzzf (contains fish)

Het eerste voedingsmiddel op de lijst heeft vier ingrediënten (geschreven in een taal die je niet begrijpt): mxmxvkd, kfcds, sqjhc en nhms. Hoewel het voedingsmiddel ook nog andere allergenen kan bevatten, worden achteraan enkele allergenen vermeld die het voedsel zeker bevat: dairy en fish.

De eerste stap bestaat erin om te bepalen welke ingrediënten onmogelijk één van de allergenen in de voedingsmiddelen op je lijst kunnen bevatten. In dit voorbeeld kan geen van de ingrediënten kfcds, nhms, sbzzf of trh een allergeen bevatten. Tel het aantal keren dat één van deze ingrediënten in de ingrediëntenlijsten voorkomt. In dit geval tel je er 5: ze komen allemaal één keer voor, behalve sbzzf dat twee keer voorkomt.

Assignment

Bepaal welke ingrediënten onmogelijk één van de allergenen op de lijst van voedingsmiddelen kunnen bevatten. Hoe vaak komen deze ingrediënten voor? Hiervoor ga je als volgt te werk:

Voorbeeld

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

> inertIngredients("foods.txt")
5