Het UUCP1
systeem voor elektronische mail — een van de oudste emailprotocollen
— liet enkel toe om tekstuele informatie uit te wisselen tussen
computersystemen. Om toch binaire bestanden te kunnen versturen, zocht men
een manier om binaire data om te zetten naar tekst. Hiervoor gebruikte men
een techniek die uuencoding2
genoemd wordt (afgeleid van Unix-to-Unix encoding). De codering
van een binair bestand zag er dan bijvoorbeeld als volgt uit:
begin 644 bestand.txt M22!F965L('9E<GD@<W1R;VYG;'D@86)O=70@>6]U(&1O:6YG(&1U='DN(%=O M=6QD('EO=2!G:79E(&UE(&$@;&ET=&QE(&UO<F4@9&]C=6UE;G1A=&EO;B!A M8F]U="!Y;W5R(')E861I;F<@:6X@1G)E;F-H/R!)(&%M(&=L860@>6]U(&%R M92!H87!P>2#B@)0@8G5T($D@;F5V97(@8F5L:65V92!M=6-H(&EN(&AA<'!I M;F5S<RX@22!N979E<B!B96QI979E(&EN(&UI<V5R>2!E:71H97(N(%1H;W-E M(&%R92!T:&EN9W,@>6]U('-E92!O;B!T:&4@<W1A9V4@;W(@=&AE('-C<F5E M;B!O<B!T:&4@<')I;G1E9"!P86=E<RP@=&AE>2!N979E<B!R96%L;'D@:&%P 3<&5N('1O('EO=2!I;B!L:69E+C P ` end
Een uuencoded bestand begint met één regel koptekst, en eindigt met twee regels voettekst. Alle tussenliggende regels bevatten enkel karakters met een ASCII-waarde tussen 32 en 95, waardoor alle symbolen die in deze codering gebruikt worden afdrukbaar zijn.
Elke regel van het tekstbestand uuencoded.txt3 bestaat uit een patroon $$p \in \mathcal{P}$$, gevolgd door één enkele spatie en een woord $$w \in \mathcal{W}$$. De verzameling $$\mathcal{P}$$ bevat alle reeksen van één of meer hoofdletters, cijfers en leestekens (met ASCII-waarde tussen 33 en 95). Er komen dus geen kleine letters en spaties voor in die reeksen karakters. De verzameling $$\mathcal{W}$$ bevat alle woorden die enkel bestaan uit kleine letters. Gevraagd wordt:
Bepaal zo kort mogelijke reguliere expressies voor de volgende deelverzamelingen van $$\mathcal{P}$$:
$$\mathcal{P}_1 = \{p \in \mathcal{P}\,|\, p$$ bevat een punt, een vraagteken en een uitroepteken$$\,\}$$
voorbeelden: | |
$$\mathcal{P}_2 = \{p \in \mathcal{P}\,|\, p$$ bevat hoogstens twee opeenvolgende leestekens$$\,\}$$
voorbeelden: | |
$$\mathcal{P}_3 = \{p \in \mathcal{P}\,|\, p$$ begint met een hoofdletter die exact drie keer voorkomt in $$p\,\}$$
voorbeelden: | |
$$\mathcal{P}_4 = \{p \in \mathcal{P}\,|\,$$in $$p$$ worden ronde haakjes alternerend geopend en gesloten, en elk geopend rond haakje moet verderop ook terug afgesloten worden$$\,\}$$
voorbeelden: | |
Reeksen zonder openende of sluitende ronde haakjes behoren per definitie tot $$\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)$$.
Bepaal als volgt de woorden $$w_1\ w_2\ w_3\ w_4$$ van een geheime boodschap:
het woord $$w_1$$ staat op de unieke regel waarvan $$p$$ behoort tot $$\mathcal{P}_1 \cap \mathcal{P}_2$$
het woord $$w_2$$ staat op de unieke regel waarvan $$p$$ behoort tot $$ \mathcal{P}_2 \cap \mathcal{P}_3$$
het woord $$w_3$$ staat op de unieke regel waarvan $$p$$ behoort tot $$\mathcal{P}_3 \cap \mathcal{P}_4$$
het woord $$w_4$$ staat 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 het 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 het woord $$w_j$$ letterlijk uit te schrijven (bv. echo $$w_j$$).