Morse is een gecodeerde communicatievorm bestaande uit signalen die met tussenpozen worden uitgezonden. Vastgelegde combinaties van deze signalen stellen dan de verschillende letters, leestekens en cijfers voor. Deze morsecode werd in 1835 uitgevonden en ontwikkeld door Samuel Morse, met als doel ze te gebruiken voor het verzenden van telegrafische berichten. Met een telegraaf (zie figuur) kon men namelijk enkel kiezen tussen twee toestanden: sleutel naar beneden (= stroom) of sleutel naar boven (= geen stroom) en tijdsduur (kort of lang). Telegrafie wordt algemeen beschouwd als een voorloper van de latere digitale communicatie. Merk op dat in snelheidswedstrijden tussen ervaren morsecodeoperatoren en experts in het verzenden van SMS berichten, morsecode steevast als overwinnaar uit de bus komt.

seinsleutel
Antieke seinsleutel waarmee elektrische pulsen kunnen gemaakt worden voor het versturen van berichten in morsecode.

In de internationale morsecode worden korte signalen genoteerd met een punt (.) en lange signalen met een koppelteken (-).

Opgave

Het bestand morse.txt1 bevat de vertaling naar morsecode van een lijst van woorden. Op elke regel staat de morsecode van één enkel woord (waarbij geen rekening werd gehouden met de tussenpozen), gevolgd door een spatie en het woord zelf tussen ronde haakjes. Gevraagd wordt:

  1. Bepaal reguliere expressies voor elk van onderstaande verzamelingen. Daarbij staat $$\mathcal{M}$$ voor de verzameling van alle woorden in morsecode. Probeer de reguliere expressies bovendien zo kort mogelijk te houden.

    • $$\alpha = \{ m \in \mathcal{M}\,|\,$$ geen enkel symbool komt meer dan twee keer na elkaar voor in $$m$$ $$\}$$

    • $$\beta = \{ m \in \mathcal{M}\,|\,$$ eerste en laatste twee symbolen van $$m$$ zijn gelijk, maar omgekeerde volgorde $$\}$$

    • $$\gamma = \{ m \in \mathcal{M}\,|\,$$ op elke even positie van $$m$$ komt een punt voor $$\}$$

    • $$\delta = \{ m \in \mathcal{M}\,|\,$$ $$m$$ bevat minimaal drie en maximaal vijf koppeltekens $$\}$$

    Gebruik een commando uit de grep familie om enkel die regels van het bestand morse.txt2 te selecteren met het patroon dat tot de opgegeven verzameling behoort.

  2. 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 met het patroon uit verzameling $$\alpha \cap \beta$$

    • het tweede woord staat op de unieke regel met het patroon uit verzameling $$\beta \cap \gamma$$

    • het derde woord staat op de unieke regel met het patroon uit verzameling $$\gamma \cap \delta$$

    • het vierde woord staat op de unieke regel met het patroon uit 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).