Het Rad van Fortuin is een spelprogramma dat in Vlaanderen reeds in de jaren 70 werd uitgezonden op de toenmalige BRT (toen nog onder de naam Rad der Fortuinen) met Mike Verdrengh als presentator. Na de oprichting van de commerciële zender VTM werd het daar al gauw één van de populairste programma’s, gepresenteerd door Walter Capiau en zijn bevallige lettermeisje Aurore.

Het spel verloopt over een aantal ronden, waarbij drie kandidaten in elke ronde een zin of een gezegde moeten raden waarvan de rubriek gegeven is (bijvoorbeeld eten en drinken of een gebeurtenis). Op een speciaal bord wordt met gekleurde vlakken aangegeven hoeveel letters de zin telt, en waar de spaties en leestekens staan. Tijdens het spel mogen de kandidaten om beurt een medeklinker raden. Alle voorkomens van de geraden medeklinker worden zichtbaar gemaakt door het lettermeisje. Op basis van de gegeven rubriek en de letters die op het bord verschijnen, moeten de kandidaten het woord proberen te raden nadat ze de gevleugelde woorden “Ik ga het zeggen, Walter …” hebben uitgesproken.

AC Meloen

Het Rad van Fortuin was één van die televisieprogramma’s die ontzettend veel kijkers lokten, maar waar niemand van durfde toegeven dat hij er stiekem naar meelonkte. Was het niet naar het lettermeisje, dan was het naar het glimmend chroom van de auto of de wasmachine in de prijzenkast. Een leuke anekdote: toen één van de lettermeisjes de gewonnen auto de studio moest binnenrijden, botste ze tegen het letterbord aan. Bord beschadigd en auto terug naar de garage voor een nieuwe bumper.

Minstens even legendarisch was het soms bedroevende niveau van de kandidaten. Sommige blunders zitten voor eeuwig en altijd in ons collectieve geheugen gegrift. Wat dacht je bijvoorbeeld van de zangeres Asebille O, het blootlichaampje, het waterbad, president Jill Clinton, de Italiaanse voetbalploeg AC Meloen, het fruit pimpelmuis, het bouwwerk de chinese mier, presentatrice Sabena Devis, de balletjestrui uit de Ronde van Frankrijk of de paneermuil uit de rubriek eten en drinken. En voor de Gentenaars mogen we natuurlijk ook de bruudruuster niet vergeten. Hilarische televisie! Ja zelfs het productiehuis Woestijnvis1 heeft zijn naam ontleend aan een lapsus uit het Rad van Fortuin.

Veel van deze bloopers zijn ondertussen een eigen leven gaan leiden, waardoor het soms moeilijk te achterhalen is welke ervan echt in het Rad van Fortuin zijn opgedoken, en welke urban legends zijn die door leukerds zijn verzonnen2.

Opgave

Gevraagd wordt om een bash shell script rvf te schrijven waaraan één of twee argumenten moeten doorgegeven worden. Het eerst argument moet een uitdrukking zijn die door een kandidaat van het Rad van Fortuin als antwoord zou kunnen gegeven worden, en die uit meerdere woorden mag bestaan. Als tweede argument kan de locatie van een tekstbestand aan het shell script doorgegeven worden. Dit tekstbestand moet een reeks mogelijke uitdrukkingen bevatten, die elk op een afzonderlijke regel staan. Indien er geen tweede argument aan het shell script wordt doorgegeven, dan moet het script de mogelijke uitdrukkingen inlezen uit standaard invoer.

Het shell script moet de alfabetisch gesorteerde lijst van uitdrukkingen uit het gegeven bestand (tweede argument) die matchen met het gegeven antwoord (eerste argument) uitschrijven naar standaard uitvoer. Een uitdrukking matcht met het gegeven antwoord als ze

  1. even lang is als het gegeven antwoord
  2. niet gelijk is aan het gegeven antwoord
  3. op elke positie waar in het antwoord een klinker staat zelf ook een klinker heeft staan (niet noodzakelijk dezelfde)
  4. op elke positie waar in het antwoord geen klinker staat datzelfde karakter heeft staan
  5. op elke positie waar in het antwoord een hoofdletter staat zelf ook een hoofdletter heeft staan, en idem voor kleine letters

Het shell script moet de volgende foutafhandeling voorzien:

Voorbeeld

Onderstaande voorbeeldsessie geeft aan hoe het shell script rvf moet kunnen gebruikt worden. Hierbij gaan we ervan uit dat de tekstbestanden radvanfortuin.txt3 en woorden.txt4 zich in de huidige directory bevinden.

$ rvf "bruudruuster" radvanfortuin.txt
broodrooster
$ echo $?
0
$ rvf "AC Meloen" < radvanfortuin.txt
AC Milaan

$ rvf
Syntaxis: rvf patroon [bestand]
$ echo $?
1
$ rvf a b c d e f g h
Syntaxis: rvf patroon [bestand]
$ echo $?
1
$ rvf radvanfortuin.txt blootlichaampje
rvf: bestand "blootlichaampje" bestaat niet of is onleesbaar
$ echo $?
2
$ rvf "Jill Clinton" radvanfortuin.txt
rvf: geen uitdrukkingen gevonden die matchen met "Jill Clinton"
$ echo $?
3