Inhoud

Som en Product
   Analyse
      Variant 1
      Variant 2
   Implementatie
      Opbouw commandobestand
      Grafische weergave
   Gebruik programma
   Download
Som en Product - Implementatie - Opbouw commandobestand

Opbouw commandobestand

Met behulp van bestanden kunnen announcements worden ingevoerd in het programma, en hun effect op de kennis van de spelers S en worden bepaald. De parser voor formules in het programma is, vooral vanwege tijdsdruk, nog behoorlijk ruw. Het kan niet testen of een ingevoerde formula valide is, en zal in geval van een incorrecte formule proberen door te gaan. Dit zal in de meeste gevallen leiden tot een incorrecte interpretatie of een crash van het programma. Deze onvolkomenheid is echter eenvoudig op te lossen, gegeven voldoende tijd.

Zoals het systeem op het moment werkt, moet het input bestand als volgt zijn opgebouwd. Elke regel representeeert een commando, dat begint met een commandosymbool en wordt gevolgd door een formule. De volgende commandosymbolen zijn geimplementeerd:

  • ! formule maakt van de formule een announcement, en geeft de geinterpreteerde formule terug;
  • ? formule test of de formule waar is, en geeft true of false terug;
  • * formule geeft alle paren (x,y) terug waarvoor geldt dat de formule waar is in de bijhorende wereld.
Daarnaast ban met behulp van de regel + bestandsnaam grafische weergave worden opgeslagen als een PNG bestand met de opgegeven bestandsnaam.

Formules binnen het programma zijn als volgt opgebouwd:

  • proposities:
    • x1, x2, ... betekent dat het laagste getal van het paar 1, 2, ... is;
    • y1, y2, ... betekent dat het hoogste getal van het paar 1, 2, ... is;
    • x1y2, x1y3, ..., x2y3, x2y4, ... betekent dat het paar (1,2), (1,3), ..., (2,3), (2,4), ... is;
    • s1, s2, ... betekent dat de som van het paar 1, 2, ... is;
    • p1, p2, ... betekent dat het product van het paar 1, 2, ... is;
    • T is de propositie die altijd waar is.
  • (formule);
  • ~formule staat voor de logische NOT operator;
  • formule & formule staat voor de logische AND operator;
  • #agent formule staat voor de kennis operator (dwz. Kagent formule);
  • @agent nummer is waar wanneer agent toegangsrelaties heeft tot precies nummer wereld(en).
De parser interpreteert formules niet altijd zoals gebruikers met een achtergrond in logica zouden verwachten. In deze gevallen kunnen haakjes gebruikt worden om de parser naar de juiste interpretatie te leiden. De formule ~x2 & ~x3 wordt door de parser bijvoorbeeld geinterpreteerd als ~(x2 & (~x3)) en niet als (~x2) & (~x3).

Om de formules iets duidelijker te maken, volgen een aantal voorbeelden van formules die gebruikt kunnen worden in deze setting.
@P 1Agent P heeft toegang tot precies één wereld (ofwel agent P weet wat de oplossing is)
#S ~@P 1Agent S weet dat agent P niet precies één wereld ziet
#S s24Agent S weet dat de som van de getallen 24 is
Met behulp van deze formules kunnen announcements worden geconstrueerd:
S: Ik weet dat jij niet weet wat de getallen zijn.! #S ~@P 1
P: Ik hou nog 3 paren voor mogelijk! @P 3

Som en Product - Implementatie - Opbouw commandobestand