We hebben een bekende oneliner uit een film verborgen in een directorystructuur. Jouw missie — mocht je kiezen om die te aanvaarden — bestaat erin om die oneliner op te sporen.

Om uit te leggen hoe we de oneliner in de directorystructuur verborgen hebben, gebruiken we het volgende voorbeeld:

I see dead people.

Als leidraad gebruiken we een tekstbestand met daarin de korte verhaallijn van de film. In dit voorbeeld gebruiken we het tekstbestand the_sixth_sense.txt1 met daarin de volgende verhaallijn van de film The Sixth Sense2 (1999):

"A boy who communicates with
spirits, seeks the help of a
disheartened child-psychologist."

We herleiden deze verhaallijn tot een opeenvolging van woorden, waarbij een woord gedefinieerd wordt als de langst mogelijke opeenvolging van letters. De woorden worden daarbij ook omgezet naar kleine letters. Bovenstaande verhaallijn wordt dus herleid tot de volgende reeks van woorden:

a boy who communicates with spirits seeks the help of a disheartened child psychologist

We maken nu een directory (bv. the_sixth_sense/) die we de basisdirectory noemen, en navigeren naar de basisdirectory. Daarna doen we met de $$n$$ opeenvolgende woorden $$w_i$$ ($$i = 1, \ldots, n$$) uit de reeks telkens willekeurig één van de volgende twee dingen:

Op die manier verkrijgen we bijvoorbeeld onderstaande directorystructuur:

the_sixth_sense/
├── a/
│   ├── boy ("I")
│   └── disheartened/
│       └── child/
│           └── psychologist ("people.")
├── who/
│   └── communicates ("see")
└── with/
    └── spirits/
        └── seeks/
            └── the/
                └── help/
                    └── of ("dead")

Daarbij hebben we de directories voorgesteld met een slash op het einde van hun naam, en hebben we na de namen van de gewone bestanden tussen ronde haakjes en dubbele aanhalingstekens ook hun inhoud gezet. Om de oneliner nog beter te verbergen, voegen we daarna onder de basisdirectory ook nog wat willekeurige directories en gewone bestanden toe. Het resultaat hiervan vind je terug in het ZIP-bestand the_sixth_sense.zip3.

Opgave

Schrijf een bash shell script oneliner waaraan twee argumenten moeten doorgegeven worden: i) de padnaam van een basisdirectory waarin we een oneliner uit een film verborgen hebben volgens de procedure uit de inleiding en ii) de padnaam van een tekstbestand met de korte verhaallijn van een film die we hierbij als leidraad gebruikt hebben. Het shell script moet de verborgen oneliner uitschrijven naar stdout, waarbij de woorden van de oneliner telkens van elkaar worden gescheiden door één enkele spatie.

Voorbeeld

Onderstaande voorbeeldsessie geeft aan hoe het shell script oneliner moet kunnen gebruikt worden. Hierbij gaan we ervan uit dat de directory the_sixth_sense4 en het bestand the_sixth_sense.txt5 zich in de huidige directory bevinden.

$ oneliner the_sixth_sense6 the_sixth_sense.txt7
I see dead people.