Sida 1 av 1

Python logic

Postat: 10 jan 2008, 14:40
av gnomefoot
Sitter med lite pythonprogrammering, ska ha prov i detta om typ en vecka. Med ett stort jäkla kompendie är det dessa tre repetitionsuppgifter jag inte får rätt på. Någon här som har hjärta att hjälpa lite?

ska skriva satser som kontrollerar om det är sant eller falskt. Vad gör jag fel?

denna om den är symmetrisk

Kod: Markera allt

ia1 = Interpretation([knows(bob,john),knows(john,bob),knows(mary,alice),knows(alice,mary)],[bob,john,mary,alice])
f1a1 = forall(x, knows(x, bob)) > forall(y, knows(bob, y)) & forall(x, knows(x, mary)) > forall(y, knows(mary, y))
print 'This Is symmetric:', f1a1.val(ia1)

transitiv.

Kod: Markera allt

ia2 = Interpretation([knows(bob,john),knows(john,bob),knows(mary,alice),knows(alice,mary)],[bob,john,mary,alice])
f1a2 = forall(z, forall(y, forall(x, (knows(x, y) & forall(x, knows(y,z)) > forall(x, knows(x, z))))))
print 'This Is Transitive:', f1a2.val(ia2)
och symmetrisk igen.

Kod: Markera allt

ia5 = Interpretation([loves(bob,mary),loves(john,john),loves(mary,alice),loves(bob,alice)],[bob,john,mary,alice])
f1a5 = forall(x, forall(y, forall(z, loves(x, y) & loves(y, z) > loves(x, z))))
print 'This is symmetric', f1a5.val(ia4)
har helt kört fast på dessa. några ideer?

SV: Python logic

Postat: 10 jan 2008, 22:20
av per9000
Vad är knows och vad är interpretation? och vad returnerar de?

Personligen hatar jag oneliners, testa om du kan veckla ur dina rader med forall och få något som går att läsa lite bättre, jag ser verkligen inte vad det står.

Ska man tänka connectivity-matrix, venn-diagram eller något liknande?

/Per

SV: Python logic

Postat: 10 jan 2008, 22:34
av gasol
Symetrin skulle du kunna beskriva med en sorts dubbellänkad lista

knows(x,y) antar jag är ett predikat. hur avgör det om bob känner john finns det någon underliggande modell?


håller även med per rekursiva funktioner på en rad är inte lätta att läsa...