Iti0120lab72cnf

Allikas: Lambda
# k6ikide numbriga ruutude peal kutsun välja cnf_sweeper()
# enne peab olema teada kinniste naabrite list

def cnf_sweeper(m, neighbors):
    """CNF komponent ühe ruudu kohta
    parameetrid: m - miinide arv
                neighbors - naabrite list"""
    n = len(neighbors)
    cnf = []
    for i in range(2**n):
        binform = "{:0{n}b}".format(i, n=n)
        ones = 0
        clause = []
        for j in range(n):
            if binform[j] == "1":
                ones += 1
                clause.append(-neighbors[j])
            else:
                clause.append(neighbors[j])
        if ones != m:
            cnf.append(tuple(clause))
            #print(binform, ones, clause)
    return cnf

test = cnf_sweeper(1, [4, 5, 6, 7])
print(test)