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 bevat een reeks karakters die enkel bestaan uit hoofdletters, cijfers en leestekens (met ASCII-waarde tussen 33 en 95). Er komen dus geen kleine letters en spaties voor in de reeks karakters. Het aantal karakters in een reeks kan variëren van regel tot regel. Na de reeks karakters volgt nog een spatie en een woord dat enkel bestaat uit kleine letters. Gevraagd wordt:
Bepaal reguliere expressies voor elk van onderstaande verzamelingen. Daarbij staat $$\mathcal{U}$$ voor de verzameling van alle mogelijke reeksen karakters zoals die voorkomen aan het begin van de regels uit het bestand uuencoded.txt4.
$$\alpha = \{u \in \mathcal{U}\,|\, u$$ bevat een punt, een vraagteken en een uitroepteken$$\,\}$$
voorbeelden: | |
$$\beta = \{u \in \mathcal{U}\,|\, u$$ bevat hoogstens twee opeenvolgende leestekens$$\,\}$$
voorbeelden: | |
$$\gamma = \{u \in \mathcal{U}\,|\, u$$ begint met een hoofdletter die exact drie keer voorkomt in $$u\,\}$$
voorbeelden: | |
$$\delta = \{u \in \mathcal{U}\,|\,$$in $$u$$ 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 $$\delta$$.
Gebruik een commando uit de grep familie om enkel die regels van het bestand uuencoded.txt5 te selecteren die behoren tot de opgegeven verzameling.
Beschouw de verzamelingen $$\alpha$$, $$\beta$$, $$\gamma$$ en $$\delta$$ zoals hierboven gedefinieerd. Gebruik nu deze verzamelingen om op de volgende manier een boodschap bestaande uit vier woorden te achterhalen:
het eerste woord staat op de unieke regel uit de verzameling $$\alpha \cap \beta$$
het tweede woord staat op de unieke regel uit de verzameling $$\beta \cap \gamma$$
het derde woord staat op de unieke regel uit de verzameling $$\gamma \cap \delta$$
het vierde woord staat op de unieke regel uit de verzameling $$\delta \cap \alpha$$
Geef telkens een Unix commando dat elk van deze woorden opzoekt in het bestand en uitschrijft naar standaard uitvoer (zonder het patroon dat aan het woord voorafgaat). Hierbij is het dus niet toegelaten om het woord letterlijk uit te schrijven (bv. echo xxx).
Volg aandachtig onderstaande richtlijnen bij het indien van je oplossing voor deze opgave:
Plaats je commando's voor de acht delen van deze vraag onder de titels in het indienvenster.
Maak geen aanpassingen aan de regels die al reeds in het venster staan, deze regels worden gebruikt om het bestand op te splitsen in de verschillende deelantwoorden. Op de feedbackpagina kan je controleren of de opsplitsing gelukt is.
Klik hier om een voorbeeld te vinden van een (foutieve6) inzending.