|
Perl Doolhoven
Een voorbeeld van programmeren in Perl: soms wil je, als ontspanning of
als deel van een programma, een doolhof hebben. Maar hoe maak (fabriceer,
niet: los op) je een doolhof? Hier een programma, in twee versies:
simple_maze.pl, een eenvoudige versie die een
ASCII doolhof maakt van 30 x 10 vakjes. Heel geschikt om het algoritme te
beklijken. Op het voorbeeld hiernaast heb ik dit even aangepast tot 10 x 8,
om niet de hele pagina in beslag te nemen.
doolhof.pl, een uitgebreidere versie met allerlei
opties, onder andere om ze als plaatjes (in plaats van tekst) op te slaan.
Hier is de gekozen afmeting 40 bij 20, even 90o gedraaid ivm
beschikbare ruimte. Maar het kan ook bijvoorbeeld 1000 bij 1000 aan (al
moet je dan wel een A3-formaat printer en een goed vergrootglas
hebben......). Je ziet hier ook al een van de extra's: de grote kamer in
het midden. Kan je met opties kiezen (perl -w doolhof.pl
-? voor een lijst met opties).
Hoe werkt het?
Het basis-idee is vrij simpel. Stel je
een lege kamer voor, met een deur aan iedere kant. Dit is het meest simpele
doolhof. Maar nu: als je hier een muur in plaatst die aan een uiteinde aan
een bestaande muur aansluit, maar die aan de andere uiteinde vrij staat, dan
is dit nog steeds een doolhof met een route van begin naar einde. Zie het
plaatje hiernaast.
En hoeveel muren je op deze
manier toevoegd, er blijft altijd een, maar ook precies een, route
beschikbaar, die alleen steeds ingewikkelder wordt. Op dit principe werkt ook
het programma. Eerst wordt een lege rechthoek gemaakt, en vervolgens worden
hier muren in geplaatst, altijd beginnend op een bestaande muur.
Wat heb je hier verder voor nodig? Eigenlijk alleen Perl, voor de
tekst-versie. Maar als je de extra opties wilt gebruiken, zoals de graphics
output, is ook de GD library nodig. Op de PC is dit te downloaden van de
'ActiveState'
site. Voor Linux moet je even op CPAN kijken. That's all.
|