def prettyprint(self): s = ["--------------------------------------------------------"] for row in self.rows: for index in xrange(self._size): ss = [] for cell in row: sss = [] cellRow = cell.getRow(index) for element in cellRow: sss.append("%(V)04s"%{"V":element.getValue()}) ss.append(", ".join(sss)) s.append("[ "+"| ".join(ss)+" ]") s.append("--------------------------------------------------------") s1 = ["--------------------------------------------------------"] for row in self.rows: for index in xrange(self._size): ss = [] for cell in row: sss = [] cellRow = cell.getRow(index) for element in cellRow: poss = element.getPossibles() if len(poss)==0: poss = "[None]" else: poss = "%(V)s"%{"V":list(poss)} sss.append(poss) ss.append(", ".join(sss)) s1.append("[ "+"| ".join(ss)+" ]") s1.append("--------------------------------------------------------") for index in xrange(len(s)): s[index] = s[index] + " " + s1[index] return "\n".join(s)
def knowns(self): knowns = [] for element in self.elements: if element.hasValue(): value = element.getValue() if value in knowns: raise LogicError(value, knowns) knowns.append(value) knowns.sort() return Set(knowns)
def coords(self, knownValue): for element in self.elements: if element.hasValue(): if element.getValue()==knownValue: return element.row, element.col