Mentions légales du service

Skip to content
Snippets Groups Projects
Commit a6597500 authored by Nazim@misirlou's avatar Nazim@misirlou
Browse files

nzm

parent 2c05f815
No related branches found
No related tags found
No related merge requests found
TABPOS=['a','A','b','B','c','C']
def invert(val):
assert val=='0' or val=='1'
return '1' if val=='0' else '0'
def valueOf(var, assignment):
""" returns the value of a variable according to an assignment """
pos= TABPOS.index(var)
val= assignment[pos//2]
if (pos%2==0):
return val
else:
return invert(val)
def ORop(valA, valB):
""" OR operator """
assert valA=='0' or valA=='1'
assert valB=='0' or valB=='1'
return '0' if valA=='0' and valB=='0' else '1'
def OR3op(valA, valB, valC):
""" OR operator """
assert valA=='0' or valA=='1'
assert valB=='0' or valB=='1'
assert valC=='0' or valC=='1'
return '0' if valA=='0' and valB=='0' and valC=='0' else '1'
def parseOR2(operation, assignment):
""" parsing x v y """
assert operation[2]=="v" and len(operation)==5, print("oulala2:[%s]"%operation)
argA, argB= operation[0], operation[4]
valA=valueOf(argA,assignment)
valB=valueOf(argB,assignment)
return ORop(valA,valB)
def parseOR3(operation, assignment):
""" parsing x v y v z"""
assert operation[2]=="v" and operation[6]=="v" and len(operation)==9, print("oulala3:[%s]"%operation)
argA, argB, argC= operation[0], operation[4],operation[8]
valA=valueOf(argA,assignment)
valB=valueOf(argB,assignment)
valC=valueOf(argC,assignment)
return OR3op(valA,valB,valC)
def evaluate(operation,assignment):
arity=1+operation.count('v')
assert arity==2 or arity==3, print("oulala:"+operation)
if arity==2:
val=parseOR2(operation, assignment)
else:
val=parseOR3(operation, assignment)
#print("evaluating %s on assignment:%s >> %s"%(operation,assignment,val))
return val
def assign(a,b,c):
return "%s%s%s"%(a,b,c)
def scanTab(clause):
transtab=""
for i in range(8):
a,b,c,=i//4,(i//2)%2,i%2
#print ( "i:%d %d %d %d"%(i,a,b,c) )
assi=assign(a,b,c)
res= evaluate(clause, assi)
transtab+=res
W=int(transtab[::-1],2)
print("clause:%s W:%d transtab:%s"%(clause, W, transtab))
listf0=['a v b','b v c','a v c']
listf1=['A v b','a v B', 'B v c', 'b v C', 'A v c','a v C']
listf2=['a v b v c','A v b v c','a v B v c', 'a v b v C', 'A v B v c', 'A v b v C', 'a v B v C', 'A v B v C']
def evalFormulae(listFormulae):
print("-"*30)
for form in listFormulae:
scanTab(form)
print("-"*30)
evalFormulae(listf0)
evalFormulae(listf1)
evalFormulae(listf2)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment