Kenneth "Kenny" McCormick is een fictief 9-jarig personage en één van de vier hoofdrolspelers in de animatiereeks South Park1, naast Stan Marsh2, Kyle Broflovski3 en Eric Cartman4. Zijn vaak gedempte en onverstaanbare stem — door de kap van zijn parka die zijn mond bedekt — wordt ingesproken door Matt Stone die de reeks mee creëerde. Hij is een leerling uit het derde, later vierde leerjaar die vaak buitengewone ervaringen heeft die atypisch zijn voor het conventionele leven in een kleine voorstad van zijn geboortestad South Park, Colorado, waar hij met zijn straatarme familie woont.
Het personage werd populair dankzij een running joke tijdens de eerste vijf seizoenen van de reeks, waarbij Kenny routinematig een ondraaglijke dood stierf voordat hij levend en wel terugkeerde in de volgende aflevering met weinig tot geen uitleg. Stan gebruikte daarbij vaak de slogan
Oh my god! They killed Kenny!
gevolgd door Kyle die uitriep
You bastard(s)!
De eerste, enige en laatste keer dat Kenny hardop en verstaanbaar sprak, was toen zijn gezicht volledig onbedekt was in de aflevering Bigger, Longer & Uncut5.
Kenny's code is een pseudotaal die de gedempte stem van Kenny McCormick nabootst. In die taal wordt elk karakter van de klare tekst vervangen door een triplet van 3 letters dat samengesteld is uit de kleine letters m, f en p, en de hoofdletters M, F en P.
De sleutel van Kenny's code zit in een tekstbestand waarvan elke regel bestaat uit 4 karakters: een triplet (samengesteld uit de letters M, P, F, m, p en f) gevolgd door het corresponderende karakter uit de klare tekst. Zowel de tripletten als de corresponderende karakters worden hoogstens één keer gebruikt in een sleutel van Kenny's code. Met deze sleutel (kenny.01.txt6)
PPmy
FFPi
MfFe
FffK
pmPk
FMm.
mMF'
pmmh
pfpm
pFmV
FFMO
PMm
mfPl
mmMn
mFpd
FMFo
pPp$
MPFg
mpFT
mmP!
waarin de tripletten in het blauw weergegeven worden, kan bijvoorbeeld de klare tekst
Oh my god! They killed Kenny!
omgezet worden naar de cijfertekst
O h m y g o d ! T h e y k i l l e d K e n n y !
FFM pmm PMm pfp PPm PMm MPF FMF mFp mmP PMm mpF pmm MfF PPm PMm pmP FFP mfP mfP MfF mFp PMm Fff MfF mmM mmM PPm FMm
Door elk triplet in de cijfertekst te vervangen door het corresponderende karakter, krijg je terug de klare tekst.
Gevraagd wordt:
Schrijf een functie lees_sleutel waaraan de locatie van een tekstbestand (str) moet doorgegeven worden met een sleutel $$\mathcal{K}$$ voor Kenny's code. De functie moet de dictionaryvoorstelling van sleutel $$\mathcal{K}$$ teruggeven: een dictionary (dict) die elk karakter uit de klare tekst (str) in sleutel $$\mathcal{K}$$ afbeeldt op het correspondende triplet (str).
Schrijf een functie codeer waaraan twee argumenten moeten doorgegeven worden: i) een klare tekst $$t$$ (str) en ii) de locatie van een tekstbestand (str) met een sleutel $$\mathcal{K}$$ voor Kenny's code. Als klare tekst $$t$$ een karakter bevat dat niet voorkomt in sleutel $$\mathcal{K}$$, dan moet een AssertionError opgeworpen worden met de boodschap ongeldige sleutel. Anders moet de cijfertekst (str) teruggegeven worden die correspondeert met klare tekst $$t$$ volgens Kenny's code met sleutel $$\mathcal{K}$$.
Schrijf een functie sleutel_omkeren waaraan de dictionaryvoorstelling van een sleutel $$\mathcal{K}$$ voor Kenny's code moeten doorgegeven worden. De functie moet de omgekeerde dictionary teruggeven: een dictionary (dict) die alle tripletten in sleutel $$\mathcal{K}$$ afbeeldt op hun corresponderend karakter uit de klare tekst. De functie mag de dictionaryvoorstelling van een sleutel $$\mathcal{K}$$ niet wijzigen.
Schrijf een functie decodeer waaraan twee argumenten moeten doorgegeven worden: i) een cijfertekst $$c$$ (str) en ii) de locatie van een tekstbestand (str) met een sleutel $$\mathcal{K}$$ voor Kenny's code. Als de lengte van cijfertekst $$c$$ geen veelvoud is van 3 of als cijfertekst $$c$$ een triplet bevat dat niet voorkomt in sleutel $$\mathcal{K}$$, dan moet een AssertionError opgeworpen worden met de boodschap ongeldige cijfertekst. Anders moet de klare tekst (str) teruggegeven worden die correspondeert met cijfertekst $$c$$ volgens Kenny's code met sleutel $$\mathcal{K}$$.
In deze interactieve sessie gaan we ervan uit dat de tekstbestanden kenny.01.txt7 en kenny.02.txt8 zich in de huidige directory bevinden.
>>> sleutel = lees_sleutel('kenny.01.txt9')
>>> sleutel['O']
'FFM'
>>> sleutel['h']
'pmm'
>>> sleutel[' ']
'PMm'
>>> codeer('Oh my god! They killed Kenny.', 'kenny.01.txt10')
'FFMpmmPMmpfpPPmPMmMPFFMFmFpmmPPMmmpFpmmMfFPPmPMmpmPFFPmfPmfPMfFmFpPMmFffMfFmmMmmMPPmFMm'
>>> codeer("Don't lie, Stan. Lying makes you sterile.", 'kenny.02.txt11')
'FfPFMfmFFPPFpmFpMMmPFfPPfpPPPfpMMFFfpmFpFFmFFpPFpMMpFfPPmfPPmFFMPfpMMMpPpFFMFffpPMMPpMMPPmFMfFpMpMMMMPpmFfpPMFPfPPmPFfpPpPF'
>>> codeer('Oh my god! They killed Kenny.', 'kenny.02.txt12')
Traceback (most recent call last):
AssertionError: ongeldige sleutel
>>> omgekeerde_sleutel = sleutel_omkeren(sleutel)
>>> omgekeerde_sleutel['FFM']
'O'
>>> omgekeerde_sleutel['pmm']
'h'
>>> omgekeerde_sleutel['PMm']
' '
>>> decodeer('FFMpmmPMmpfpPPmPMmMPFFMFmFpmmPPMmmpFpmmMfFPPmPMmpmPFFPmfPmfPMfFmFpPMmFffMfFmmMmmMPPmFMm', 'kenny.01.txt13')
'Oh my god! They killed Kenny.'
>>> decodeer('FfPFMfmFFPPFpmFpMMmPFfPPfpPPPfpMMFFfpmFpFFmFFpPFpMMpFfPPmfPPmFFMPfpMMMpPpFFMFffpPMMPpMMPPmFMfFpMpMMMMPpmFfpPMFPfPPmPFfpPpPF', 'kenny.02.txt14')
"Don't lie, Stan. Lying makes you sterile."
>>> decodeer('FFMpmmPMmpfpPPmPMmMPFFMFmFpmmPPMmmpFpmmMfFPPmPMmpmPFFPmfPmfPMfFmFpPMmFffMfFmmMmmMPPmFMm', 'kenny.02.txt15')
Traceback (most recent call last):
AssertionError: ongeldige cijfertekst
Films waarin vaakst het woord fuck gebruikt wordt:
Tigerland16 (527×)
Nil By Mouth17 (470×)
Casino18 (422×)
South Park: Bigger, Longer & Uncut19 (399×)
Martin Lawrence Live: Runteldat20 (347×)
Another Day in Paradise21 (327×)
Summer of Sam22 (326×)
Twin Town23 (320×)
Ken Loach's Sweet Sixteen24 (313×)
Narc25 (298×)
De winnaar — Joel Schumacher's infanterie-trainingsdrama Tigerland uit 2000 — stopt 527 fucks in 100 minuten, wat neerkomt op een fuck-per-minuut ratio van 5,27, oftewel één fuck per 12 seconden.
Damn it, Cantwell! Shit, man. Shit! Fuck, I don’t even know you, man! You sittin’ there telling your fucking stories. You make me want to fuckin’ cry! What’s that about?
Schumacher kreeg die kerst een brok steenkool cadeau.