Een vis die naar links zwemt wordt op de volgende manier voorgesteld:

anatomie
De anatomie van een vis die naar links zwemt.

Daarbij zijn de kop (<) en de staart (><) vaste onderdelen van de voorstelling. De drie andere onderdelen (voorgesteld door de blauw gestipte rechthoeken) zijn optioneel:

Als we geen enkel optioneel onderdeel gebruiken dan krijgen we

<><

maar met alle optionele onderdelen kan een vis er ook uitzien als

<°))))><<<<<<

Een vis die naar rechts zwemt wordt op dezelfde manier voorgesteld, maar dan met de onderdelen in omgekeerde volgorde

anatomie
De anatomie van een vis die naar rechts zwemt.

en waarbij een groter dan teken (>) gebruikt wordt voor de kop en de vinnen.

De lengte van een vis is het aantal karakters dat gebruikt wordt in de voorstelling van de vis.

Opgave

Elke regel van het tekstbestand fish.txt1 bestaat uit een patroon $$p \in \mathcal{P}$$, gevolgd door een verticale streep (|) en een woord $$w \in \mathcal{W}$$. De verzameling $$\mathcal{P}$$ bevat alle mogelijke voorstellingen van scholen vissen. Een school vissen bestaat uit de voorstellingen van één of meer vissen die zowel naar links als naar rechts kunnen zwemmen, waarbij opeenvolgende vissen telkens van elkaar gescheiden worden door één of meer spaties. Vóór de eerste vis en na de laatste vis kunnen nog nul of meer spaties staan. De verzameling $$\mathcal{W}$$ bevat alle woorden die enkel bestaan uit kleine letters. Gevraagd wordt:

  1. Bepaal zo kort mogelijke reguliere expressies voor de volgende deelverzamelingen van $$\mathcal{P}$$:

    • $$\mathcal{P}_1 = \{\,p \in \mathcal{P}\,|\,p\ $$bevat een vis die exact lengte 11 heeft$$\,\}$$

      voorbeeld:     >>><°>         <'))))><<<<     <^[[><<      <°}}}><      $$\in \mathcal{P}_1$$
              ><°>       <^]]]]><<         >><'>        >>>>><)'>    $$\not \in \mathcal{P}_1$$
    • $$\mathcal{P}_2 = \{\,p \in \mathcal{P}\,|\,$$alle vissen in $$p$$ zwemmen naar links$$\,\}$$

      voorbeeld:   <°]]]]><<<<<  <'><<      <')><<< <°))><<<     <^))))><<<   $$\in \mathcal{P}_2$$
        <°}><<   <^(><<     <°((((><<<<< <^((><<   ><[[[°> >>>><{'>  $$\not \in \mathcal{P}_2$$
    • $$\mathcal{P}_3 = \{\,p \in \mathcal{P}\,|\,$$alles samengeteld hebben de vissen in $$p$$ minstens 16 schubben$$\,\}$$

      voorbeeld:  <°)))><<<< >>>>><((((^> ><]]]]^>   <'{{{{><<<  <'[[[><<<<   $$\in \mathcal{P}_3$$
           <^{{><<<   <^><     >><]]°>      <'><<    <^}}}><<<<<     $$\not \in \mathcal{P}_3$$
    • $$\mathcal{P}_4 = \{\,p \in \mathcal{P}\,|\,$$alle vissen in $$p$$ hebben een oog van dezelfde vorm$$\ ^{(*)}\,\}$$

      (*) alle vissen moeten een oog hebben, dus vissen zonder oog zijn niet toegelaten

      voorbeeld: <°(><  >>>><]]°> >>><}°>     <°{{><<<<<  <°}}><<<  >>>><[[°> $$\in \mathcal{P}_4$$
         <°)><<<<  <><<<    >><(((^>  <°[[[><<<<    ><}}^>    <^(><  $$\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:

    • 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$$).