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.
|