andere opgaven: acht koninginnen | boter, kaas en eieren | laatste wint | logiquiz | sudoku | vier op 'n rij

 contact

 
VERNIEUWD (maart 2025):
puzzles.txt heeft nieuwe opmaak, en bevat meer voorbeeldpuzzels
• gewijzigde webpagina (deze)
• gewijzigd script, met snellere uitkomst
 

Logiquiz puzzel oplossen

Hoe een logiquiz puzzel oplossen, of hoe zelf een logiquiz ontwerpen ? Hier wordt uitgelegd hoe je dat met behulp van de computer kan doen.

De puzzel:

Een logiquiz is een puzzel waarbij je logisch moet redeneren om tot een oplossing te komen. Op basis van gegeven aanwijzingen dienen verbanden te worden gelegd tussen verschillende elementen.
 
De elementen kunnen een lijst met personen, voorwerpen, plaatsen, tijden of andere categorieën zijn. Met de set aanwijzingen kunnen bepaalde combinaties bevestigd of uitgesloten worden. Vaak wordt een tabel (of matrix) gebruikt om informatie te ordenen en te elimineren wat niet mogelijk is. Door logisch nadenken en uitsluiten kom je uiteindelijk tot de juiste combinaties. En daarmee tot een (de) unieke oplosing. Dit is een voorbeeld.
 
De moeilijkheidsgraad wordt bepaald door de afmetingen van het grid, en de soort aanwijzingen (bevestigingen, ontkenningen, relatieve (on)waarheden).

Benadering:

Om de puzzel geautomatiseerd te laten oplossen zijn verschillende strategiën mogelijk.
 
Wanneer de aanwijzingen leiden een (de) oplossing, geldt het tegenovergestelde ook: de oplossing moet voldoen aan alle aanwijzingen. Dit lijkt een dooddoener, maar het is de basis van computerstrategiën, zoals die van de Brute force strategie, waarbij alle mogelijke combinaties uitgeprobeerd worden, totdat (bij toeval) de juiste wordt gevonden.
 
Hoeveel combinaties mogelijk zijn, is te bereken met het begrip permutatie. Hieronder wordt getoond dat drie gekleurde ballen op 6 verschillened manieren over drie posities kunnen worden verdeeld:

grafische voorstelling van faculteit 3
grafische voorstelling van 3!

De puzzel kan worden uitgebreid met een extra eigenschap, bijvoorbeeld 'vorm':

grafische voorstelling van faculteit 3 x faculteit 13
grafische voorstelling van faculteit 3 x faculteit 3

grafische voorstelling van actor vs value
actor versus value vv.

de twee eigenschappen samen levert 6x6 = 36 combinaties op.

Actoren, eigenschappen, waarden

In het script is sprake van actoren, eigenschappen en waarden. Voor het digitaal oplossen dienen deze drie elementen (actor, eigenschap, waarde) aan elkaar te gekoppeld te kunnen worden.

    Daarvoor zijn twee functies nodig:
  1. wat is de actor die behoort bij een waarde (paarse pijl)?
    bijvoorbeeld 'wie heeft de groene vorm ?'
  2. wat is de waarde die behoort bij een actor (oranje pijl)?
    bijvoorbeeld 'welke kleur heeft Bertus ?'
Met deze twee functies kunnen alle puzzels opgelost worden (!)
 
Bijvoorbeeld, wanneer twee eigenschappen met elkaar vergeleken worden ('de cirkel is rood'): dit is een combinatie van twee keer functie (a.) (de twee bijbehorende actoren dienen gelijk te zijn).
 
wie heeft rood = actor1 = actor2 = wie heeft cirkel. Zie de figuur.

bij het vergelijken van eigenschappen/waarden worden de actoren met 	elkaar vergeleken
bij het vergelijken van eigenschappen/waarden worden de actoren met elkaar vergeleken

Met de 'Brute force' methode zullen alle 36 combinaties worden onderzocht.
Maar omdat aanwijzingen de kenmerken afhankelijk van elkaar maken, is dit niet erg effficient.
 
Bijvoorbeeld, als een aanwijzing vertelt dat Hendrik 'groen' heeft, dan zijn van alle 36 mogelijke oplossingen er na het toepassen van de aanwijzing nog twaalf over:
 
((0, 2, 1), (0, 1, 2))   ((2, 0, 1), (0, 1, 2))
((0, 2, 1), (0, 2, 1))   ((2, 0, 1), (0, 2, 1))
((0, 2, 1), (1, 0, 2))   ((2, 0, 1), (1, 0, 2))
((0, 2, 1), (1, 2, 0))   ((2, 0, 1), (1, 2, 0))
((0, 2, 1), (2, 0, 1))   ((2, 0, 1), (2, 0, 1))
((0, 2, 1), (2, 1, 0))   ((2, 0, 1), (2, 1, 0))
 
dit bespaart enorm veel rekenkracht (!).
In dit script wordt deze tactiek gebruikt.

Aanwijzingen

Voor het vastleggen van de aanwijzingen van de puzzel, kan gebruik worden gemaakt van deze formuleringen:

aanwijzingformulering
biologie is het favoriete vak van arieactors.arie == vak.biologie
jacobus behaalde de hoogst mogelijke scoreactors.jacobus == cijfer.10
voor engels werd geen zeven behaaldcijfer.engels != cijfer.7
de favoriete docente van jacobus geeft frans(actors.jacobus == docent.degroot or actors.jacobus == docent.jansen) and actors.jacobus == vak.frans
dhr. Visser geeft Engelsdocent.visser == vak.engels
Wilhelmina behaalde een betere score dan Dirkcijfer?wilhelmina > cijfer?dirk
het vak Frans wordt gegeven door mw. deGroot, en Economie door mw. Jansen, of omgekeerdvak.frans == docent.degroot and vak.economie == docent.jansen or vak.frans == docent.jansen and vak.economie == docent.degroot
Met geringe kennis van python operatoren kan vrijwel iedere aanwijzing aangepakt worden:
het cijfer dat dhr. Mulder gaf aan zijn leerling, kwam overeen met het aantal letters waaruit zijn vak bestaatlen(vak?mulder) == cijfer?mulder
voor economie en engels werden de minste cijfers gescoordcijfer?economie in [5, 7] and cijfer?engels in [5, 7]

(zie dit tekst bestand voor de uitwerking van enkele puzzels, en voor meer ideeen om formuleringen samen te stellen)

Tips

Beperkingen

Voorbeeld

Onderstaande puzzel is afkomstig van de website: logiquiz.nl
 
Opgave Gastsprekers © logiquiz.nl
 
Groep 8 ontvangt dit schooljaar enkele gastsprekers.

 aanwijzingformulering
1.in december komt iemand, die geen tycho heet, over vuurwerk vertellen.
In mei spreekt een 45-jarige over vrijheid.
onderwerp.vuurwerk == maand.december and
actors.tycho != onderwerp.vuurwerk and
onderwerp.vrijheid == maand.mei and
leeftijd?mei == 45
2.Jeanet vertelt over nepwapensactors.jeanet == onderwerp.nepwapens
3.Degene die in februari over alcohol spreekt is 2 jaar jonger dan Peteronderwerp.alcohol == maand.februari
leeftijd?peter - leeftijd?alcohol == 2
4.Tycho is 42 jaar oud. Cor is ouder dan Ninaleeftijd?tycho == 42
leeftijd?cor > leeftijd?nina
5.Wie in juni spreekt, heeft het niet over EHBOonderwerp.ehbo != maand.juni
 
Deze opgave is terug te vinden in het 'puzzles.txt' bestand (link).

Zelf een logiquiz ontwerpen

Met dit programma is het ook eenvoudig om zelf een logiquiz te ontwerpen:

  1. bedenk een onderwerp met bijbehorende actoren, eigenschappen, en waarden
  2. zet deze op papier (of Excel) tegen elkaar uit, en kies één enkele oplossing
  3. bedenk nu enkele aanwijzingen die overeenkomen met de oplossing, en vertaal die in formuleringen.
  4. run het script, en bekijk hoeveel oplossingen dit oplevert:
       → als er geen (0) oplossingen zijn dan is een aanwijzing strijdig met de oplossing
       → als er nog ~10 (of meer) oplossingen zijn dan zullen nog meer aanwijzingen moeten worden toegevoegd
       → als er slechts enkele oplossingen overblijven, vergelijk dan die oplossingen onderling om specifieke aanwijzingen te bedenken.
  5. totdat er één oplossing overblijft.
 
tip: geef de oplossing in het puzzles.txt bestand (zie andere voorbeelden aldaar), het script zal dan helpen zoeken naar tegenstrijdigheden.
 
 
Veel plezier en succes !!

De code

de code is hier te vinden