jan 062019
 

Als breingymnastiek tijdens de vakantie kregen we bij het iXperium / Centre of Expertise afgelopen vakantie bijgevoegde raadsel mee van Marijke. Ik kende het type puzzel en had ze ook al meerdere keren “op papier” gemaakt. Het is namelijk een logische puzzel waarbij je (in dit geval) voor elk huis een kolom maakt en voor elke eigenschap een rij (kleur, nationaliteit, huisdier, drank, sigaretten). Het idee is dat de aanwijzingen je in staat stellen dusdanig veel vakjes in te vullen dat de ontbrekende waarden daar automatisch uit afgeleid kunnen worden.
Leuk. Maar dat moest toch ook met de computer kunnen? Vast wel, maar dát had ik nog niet eerder gedaan. En hoewel ik daarmee niet voldeed aan een van de voorwaarden (“geen gebruik maken van internet voor het vinden van oplossingen”) ben ik er (buiten mededinging) toch mee aan de slag gegaan.

De eerste uitdaging was proberen te achterhalen welke programmeertaal het meest geschikt was. Het eerste waar ik achter kwam (dat wist ik nog niet) is dat het in het Engels een Zebra Puzzle heet en dat het betwijfeld wordt dat hij daadwerkelijk door Einstein verzonnen is. Daarna bleek al heel snel dat Prolog (een taal die al sinds de universiteit niet meer gebruikt had) gezien werd als de meest logische taal om het probleem mee op te lossen.
En dat klopt ook wel, zo bleek toen ik zag hoe het oorspronkelijke probleem in Prolog beschreven was. De versie de Marijke ons gestuurd had, gebruikte wat andere zinnen, maar veel van de Prolog code bleef qua structuur exact gelijk.

En helemaal fijn was dat ook voor Prolog een online omgeving beschikbaar is waar je de code in kunt schrijven/aanpassen en uitvoeren. Dat maakte het gemakkelijk de oplossing met Marijke te delen en nu hier online te plaatsen (de vakantie en de inzendtermijn zijn voorbij). Je kunt de code hier bekijken en uitproberen: https://swish.swi-prolog.org/p/fish_puzzle_marijke.pl
De opdracht fish_owner(Owner). geeft de oplossing, de opdracht houses(Houses). geeft de hele tabel.

En denk je nou, dat wil ik ook uitproberen! Nou, dat kan. Hier op deze pagina staan nog meer dan genoeg puzzels met dezelfde structuur. Ook de “very hard puzzles” moeten op deze manier op te lossen zijn. Durf je de uitdaging aan?

Deel dit bericht: