De Nobelprijs is een jaarlijkse geldprijs voor wetenschappers die een opmerkelijke prestatie hebben geleverd op het gebied van de natuurkunde, scheikunde, fysiologie of geneeskunde, literatuur en bevordering en behoud van de vrede. De prijs werd in 1901 bij testamentaire beschikking ingesteld door de schatrijke Zweedse industrieel Alfred Nobel. Sinds 1968 wordt er ook een Nobelprijs voor de economie uitgereikt. Hoewel het met de prijs verbonden bedrag niet onaanzienlijk is, is de prestige en erkenning die men door het winnen van een Nobelprijs krijgt voor de meeste winnaars de belangrijkste beloning.
Er bestaat geen Nobelprijs voor de wiskunde, en over de reden waarom die door Alfred Nobel over het hoofd werd gezien wordt nog steeds druk gespeculeerd. Een populair verhaal is dat Nobel wilde voorkomen dat een beroemd wiskundige (Gosta Mittag-Leffler) de prijs zou krijgen, omdat hij een affaire zou hebben met een vrouw met wie Nobel relaties onderhield. Meer waarschijnlijke verklaringen zijn dat Nobel de wiskunde niet zag als een praktische wetenschap waar de mensheid veel aan zou hebben, en het feit dat er al een andere prestigieuze wiskundeprijs in Scandinavië bestond, waar hij niet mee wilde concurreren.
Jonge wiskundigen kunnen in plaats daarvan dingen naar een Fields Medal (maximumleeftijd 40 jaar), en in 2002 werd ook de Abelprijs voor de wiskunde in het leven geroepen. Deze laatste is genoemd naar de Noorse wiskundige Niels Henrik Abel en wordt uitgereikt door de koning van Noorwegen. De Abelprijs heeft zich in korte tijd gepositioneerd — zowel qua prijzengeld als status — als waardige vervanger voor de ontbrekende "Nobelprijs voor de wiskunde". De Turing Award wordt beschouwd als de hoogste prijs binnen de informatica, genoemd naar de Britse wiskundige Alan Turing.
Voor deze opgave werken we met het CSV bestand prijzen.csv1, dat een lijst bevat van Nobelprijswinnaars, en winnaars van de Abelprijs en de Turing Award. De velden van elke record vermelden respectievelijk om welk soort prijs het gaat (prijs), de discipline (discipline) en het jaar (jaar) waarin de prijs werd uitgereikt, de naam en nationaliteit van de laureaat (laureaat), en een korte toelichting die bij de toekenning van de prijs werd uitgesproken (motivering). Voor prijzen die werden uitgereikt aan meerdere personen worden de namen en nationaliteiten van alle laureaten opgesomd, gescheiden door komma's. De naam van een laureaat wordt steeds gevolgd door zijn of haar nationaliteit tussen rond haakjes. De velden worden in dit CSV bestand telkens van elkaar gescheiden door een puntkomma (;).
We vragen je om een functie prijzen te schrijven, die kan gebruikt worden om een aantal prijzen uit het CSV bestand uit te schrijven die voldoen aan een reeks vooropgestelde criteria. De locatie van het CSV bestand moet als verplicht argument aan de functie doorgegeven worden. Daarnaast heeft de functie nog een reeks criteria die opleggen waaraan de prijzen moeten voldoen om uitgechreven te worden:
prijs (str): prijs moet tot opgegeven soort (nobelprijs, abelprijs of turing award) behoren
discipline (str): prijs werd in opgegeven discipline uitgereikt
jaar (int): prijs werd in opgegeven jaar uitgereikt
nationaliteit (str): minstens één van de laureaten had de opgegeven nationaliteit
laureaten (int): het aantal laureaten waaraan de prijs werd uitgereikt is gelijk aan het opgegeven aantal
motivering (str): motivering van de prijs bevat het tekstfragment dat aan dit argument werd doorgegeven
Voor elke prijs die aan bovenvernoemde criteria voldoet moet het soort prijs worden uitgeschreven, gevolgd door de tekst " voor de ", de discipline met een hoofdletter vooraan en de rest kleine letters, nog een spatie en het jaar tussen rond haken. Daarna volgt een dubbelpunt, een spatie en de namen van de laureaten zoals ze in het gegeven CSV bestand worden beschreven. Bij het uitschrijven van de velden moeten spaties vooraan en achteraan verwijderd worden. De oorspronkelijke volgorde waarmee de prijzen staan opgelijst in het gegeven CSV bestand moet bij het uischrijven behouden blijven. Bij criteria waarbij er een vergelijking tussen strings moet gemaakt worden, moet men geen onderscheid maken tussen hoofdletters en kleine letters.
In onderstaande voorbeeldsessie gaan we ervan uit dat het CSV-bestand prijzen.csv2 zich in de huidige directory bevindt.
>>> prijzen('prijzen.csv', prijs='nobelprijs', jaar=1994)
Nobelprijs voor de Economie (1994): John Harsanyi (VS), John Forbes Nash (VS), Reinhard Selten (Dui)
Nobelprijs voor de Geneeskunde (1994): Alfred G. Gilman (VS), Martin Rodbell (VS)
Nobelprijs voor de Literatuur (1994): Kenzaburo Oë (Jap)
Nobelprijs voor de Natuurkunde (1994): Bertram Neville Brockhouse (Can)
Nobelprijs voor de Natuurkunde (1994): Clifford Glenwood Shull (VS)
Nobelprijs voor de Scheikunde (1994): George Andrew Olah (VS)
Nobelprijs voor de Vrede (1994): Yasser Arafat (Pal), Shimon Peres (Isr), Yitzhak Rabin (Isr)
>>> prijzen('prijzen.csv', prijs='nobelprijs', discipline='wiskunde')
>>> prijzen('prijzen.csv', nationaliteit='bel')
Nobelprijs voor de Vrede (1904): Institut de Droit International (Bel)
Nobelprijs voor de Vrede (1909): Auguste Beernaert (Bel)
Nobelprijs voor de Literatuur (1911): Maurice Maeterlinck (Bel)
Nobelprijs voor de Vrede (1913): Henri La Fontaine (Bel)
Nobelprijs voor de Geneeskunde (1919): Jules Bordet (Bel)
Nobelprijs voor de Geneeskunde (1938): Corneille Jean François Heymans (Bel)
Nobelprijs voor de Vrede (1958): Georges Pire (Bel)
Nobelprijs voor de Geneeskunde (1974): Albert Claude (Bel), Christian de Duve (Bel), George E. Palade (Roe)
Nobelprijs voor de Scheikunde (1977): Ilya Prigogine (Bel)
Nobelprijs voor de Vrede (1999): Artsen zonder Grenzen (Bel)
Abelprijs voor de wiskunde (2008): John G. Thompson (VS), Jacques Tits (Bel)
>>> prijzen('prijzen.csv', discipline='scheikunde', laureaten=3)
Nobelprijs voor de Scheikunde (1967): Manfred Eigen (Dui), Ronald George Wreyford Norrish (GB), George Porter (GB)
Nobelprijs voor de Scheikunde (1986): Dudley Robert Herschbach (VS), Yuan Tseh Lee (VS), John Charles Polanyi (Can)
Nobelprijs voor de Scheikunde (1987): Donald James Cram (VS), Jean-Marie Lehn (Fra), Charles John Pedersen (VS)
Nobelprijs voor de Scheikunde (1988): Johann Deisenhofer (Dui), Robert Huber (Dui), Hartmut Michel (Dui)
Nobelprijs voor de Scheikunde (1995): Paul Josef Crutzen (Ned), Mario Jose Molina (VS), Frank Sherwood Rowland (VS)
Nobelprijs voor de Scheikunde (1996): Robert Curl (VS), Sir Harold Kroto (GB), Richard Smalley (VS)
Nobelprijs voor de Scheikunde (2000): Alan Jay Heeger (VS), Alan Graham MacDiarmid (VS/N-Z), Hideki Shirakawa (Jap)
Nobelprijs voor de Scheikunde (2002): Kurt Wüthrich (Zwi), John Bennett Fenn (VS), Koichi Tanaka (Jap)
Nobelprijs voor de Scheikunde (2004): Aaron Ciechanover (Isr), Avram Hershko (Isr), Irwin A. Rose (VS)
Nobelprijs voor de Scheikunde (2005): Robert Howard Grubbs (VS), Richard Royce Shrock (VS), Yves Chauvin (Fra)
>>> prijzen('prijzen.csv', motivering='röntgen', discipline='natuurkunde', nationaliteit='GB')
Nobelprijs voor de Natuurkunde (1915): Sir William Henry Bragg (GB), William Lawrence Bragg (GB)
Nobelprijs voor de Natuurkunde (1917): Charles Glover Barkla (GB)