Panurge is een van de belangrijkste personages in Gargantua en Pantagruel1, een vijfdelige roman van François Rabelais2 (1483–1553). Hij is een buitengewoon sluwe schurk, libertijn en lafaard, wiens naam werd afgeleid van het Griekse πανοῦργος (panoûrgos) wat "schelm" betekent.

Panurge
Panurge mis en broche par les Turcs (gravure van Gustave Doré in de uitgave van Garnier Frères, 1873).

Een greep uit Panurge's opmerkelijke uitroepen van ontzetting tijdens een storm op zee:

Ughughbubbubughsh!
Augkukshw!
Bgshwogrbuh!
Abubububugh!
Bububbububbubu! boo-hoo-hoo-hoo!
Ubbubbughschwug!
Ubbubbugshwuplk!
ubbubbubbughshw
bubbubughshwtzrkagh!
Alas, alas! ubbubbubbugh! bobobobobo! bubububuss!
Ubbubbughsh! Grrrshwappughbrdub!
Bubububbugh! boo-hoo-hoo!
Ubbubbubbugh! Grrwh! Upchksvomitchbg!
Ububbubgrshlouwhftrz!
Ubbubbububugh! ugg! ugg!
Ubbubbubbugh! Boo-hoo-hoo!

In Word Ways schreef woordkunstenaar Trip Payne:

Mijn persoonlijke favoriet is echter het ongelooflijk klinkende "Wagh, a-grups-grrshwahw!". Afgezien van het taalkundig belang (acht opeenvolgende medeklinkers, zij het gescheiden door een koppelteken), klinkt het woord gewoon niet zoals een klaagzang zou kunnen klinken. De vindingrijkheid van Panurge om met zo'n fris klinkende, fantasierijke uitroep op de proppen te komen — vooral onder zo'n druk — is ontzagwekkend.

Al deze uitroepen komen uit Jacques Leclercq3's vertaling van Gargantua en Pantagruel4 uit 1936.

Opgave

Elke regel van het tekstbestand panurge.txt5 bevat een patroon $$p$$ uit de verzameling $$\mathcal{P}$$ van alle strings die bestaan uit één of meer uitroepen die telkens van elkaar gescheiden worden door één enkele spatie. Daarbij bestaat een uitroep uit één of meer letters (zowel hoofdletters als kleine letters zijn toegelaten) gevolgd door een suffix. Op basis van de suffix onderscheiden we vijf soorten uitroepen. Vier soorten hebben één leesteken als suffix: ?, !, ¡ of ¿. De vijfde soort wordt gekenmerkt door het feit dat er geen suffix is (die heeft met andere woorden een "lege" suffix). Gevraagd wordt:

  1. Bepaal zo kort mogelijke reguliere expressies voor de volgende deelverzamelingen van $$\mathcal{P}$$. Bij het vergelijken van letters mag geen onderscheid gemaakt worden tussen hoofdletters en kleine letters: zo stellen m en M bijvoorbeeld dezelfde letter voor.

    • $$\mathcal{P}_1 = \{\,p \in \mathcal{P}\,|\,$$alle uitroepen in $$p$$ zijn van dezelfde soort$$\,\}$$

      voorbeelden: ArROLMgmp? DhBAIBBsc? udbmeTfBC? kmuFXTKTA? $$\in \mathcal{P}_1$$
        upAtWjlSo? tlqUvSVHS¡ iPlfARAPr? TTNEXynHc $$\not \in \mathcal{P}_1$$
    • $$\mathcal{P}_2 = \{\,p \in \mathcal{P}\,|\,$$er zijn klinkers die niet voorkomen in $$p\,\}$$

      opmerking: de klinkers zijn a, e, i, o en u (en hun hoofdlettervarianten)

      voorbeelden: FhZcZfnIk? bMpnYrQay DHINtWMoP¿ zqxsFLxhd! $$\in \mathcal{P}_2$$
        QIWadbDnz! dpDPmzorO? ekJKDpMzo! lyJyUWfPB¿ $$\not \in \mathcal{P}_2$$
    • $$\mathcal{P}_3 = \{\,p \in \mathcal{P}\,|\,$$er is een reeks van 5 opeenvolgende letters die in minstens 3 verschillende uitroepen van $$p$$ voorkomt$$\,\}$$

      voorbeelden: PsVcQUNCX¡ fFFGTtKIvzeA¡ PANNnnKivzE¡ YFUBeoKiVzEBQxVz¡ $$\in \mathcal{P}_3$$
        btfGpgfuC! jGIXkVrXK¿ LPsWUNEIP aGyrLtMdM¡ $$\not \in \mathcal{P}_3$$
    • $$\mathcal{P}_4 = \{\,p \in \mathcal{P}\,|\,$$in elke uitroep van $$p$$ komt elke letter hoogstens twee keer voor$$\,\}$$

      voorbeelden: FMkaTCtIK¿ EBAoyhgUD¡ TZhQrdiDj¡ fcYVHRTMQ?$$\in \mathcal{P}_4$$
        mWmWtsdxV CwrOChaGbZtxj? mwMwtSDfCW hGNKxCyQS¡ $$\not \in \mathcal{P}_4$$

    Geef telkens een Unix commando waarin de reguliere expressie gebruikt wordt door een commando uit de grep familie om enkel de regels van het tekstbestand naar stdout te schrijven waarvan het patroon $$p$$ behoort tot $$\mathcal{P}_i\ (i = 1, 2, 3, 4)$$.

  2. Bepaal als volgt de woorden $$w_1\ w_2\ w_3\ w_4$$ van een geheime boodschap:

    • woord $$w_1$$ bestaat uit de eerste letter van elke uitroep op de unieke regel waarvan $$p$$ behoort tot $$\mathcal{P}_1 \cap \mathcal{P}_2$$

    • woord $$w_2$$ bestaat uit de eerste letter van elke uitroep op de unieke regel waarvan $$p$$ behoort tot $$ \mathcal{P}_2 \cap \mathcal{P}_3$$

    • woord $$w_3$$ bestaat uit de eerste letter van elke uitroep op de unieke regel waarvan $$p$$ behoort tot $$\mathcal{P}_3  \cap \mathcal{P}_4$$

    • woord $$w_4$$ bestaat uit de eerste letter van elke uitroep op de unieke regel waarvan $$p$$ behoort tot $$\mathcal{P}_4 \cap \mathcal{P}_1$$

    Geef telkens een Unix commando waarin de reguliere expressies voor de verzamelingen $$\mathcal{P}_i\ (i = 1, 2, 3, 4)$$ gebruikt worden door commando's uit de grep familie om woord $$w_j\ (j = 1, 2, 3, 4)$$ op te zoeken in het tekstbestand en uit te schrijven naar stdout. Hierbij is het niet toegelaten om woord $$w_j$$ letterlijk uit te schrijven (bv. echo $$w_j$$).

Bronnen