def sudoku(self): self.lab.destroy() self.obvestilo.set('''Naj bo zacetne = [(i_1,j_1,k_1), (i_2,j_2,k_2), ... , (i_n,j_n,k_n)] seznam začetnih vrednosti. Prva koordinata označuje vrstico, druga stolpec, tretja pa vrednost na tem polju. - sudoku_pretvori(zacetne) nam vrne logični izraz, ki ga lahko podamo SAT solverju. - sudoku(zacetne) nam vrne izpisan rešen sudoku (če je ta rešljiv, sicer vrne niz 'Sudoku s tako podanimi začetnimi vrednostmi ni rešljiv.'). primer = [(1,1,9),(1,2,2),(1,5,1),(1,6,5),(2,3,5),(2,8,6), (3,1,6),(3,2,1),(3,4,3),(3,9,4),(4,1,2),(4,2,8),(4,5,4), (5,1,1),(5,5,3),(5,9,6),(6,5,8),(6,8,9),(6,9,5), (7,1,4),(7,6,9),(7,8,5),(7,9,3),(8,2,9),(8,7,6), (9,4,8),(9,5,6),(9,8,4),(9,9,1)] sudoku(primer) = 9 2 4 | 6 1 5 | 7 3 8 7 3 5 | 4 2 8 | 1 6 9 6 1 8 | 3 9 7 | 5 2 4 -- -- -- -- -- -- -- -- -- -- 2 8 9 | 5 4 6 | 3 1 7 1 5 7 | 9 3 2 | 4 8 6 3 4 6 | 7 8 1 | 2 9 5 -- -- -- -- -- -- -- -- -- -- 4 6 1 | 2 7 9 | 8 5 3 8 9 3 | 1 5 4 | 6 7 2 5 7 2 | 8 6 3 | 9 4 1 ''')
def single_test(): s = sudoku() clauses = formulate_sudoku(s, 3) sol = DPLL(clauses) display(s, sol, 3)
def processSudoku(self): '''process the loaded problem, solve, and display''' self.event = 'solution' problem = sudoku(self.prob.get()) solution = problem.solve() var = self.sol.set(solution) self.txt.insert(END,"\nThe solution to the problem is") self.txt.insert(END,"\n") self.show(self.event) self.txt.insert(END,"\n")
def preveri(): i = 0 primeri = preberi('primeri.txt') for polja in primeri: i += 1 print(" Sudoku št. {0}".format(i)) print("=================") formula = sudoku(polja).cnf() resljivo = dpll(formula) if resljivo==0: print("Ta sudoku ni rešljiv. \n") else: polja2 = resitev(resljivo) print("Sudoku je možno rešiti. \n\tRešitev: \n") narisi(polja2) print("\n\n")
def bench_sudoku_resolution(): # timeit.timeit("single_test", globals=locals()) clauses = formulate_sudoku(sudoku(), 3) t = time.time() assert DPLL(clauses) is not False print(f'Temps pour resoudre un sdk de // taille=3 // is {time.time() - t}') s = generate(4, 4) clauses = formulate_sudoku(s, 4) t = time.time() assert DPLL(clauses) is not False print(f'Temps pour resoudre un sdk de // taille=4 // is {time.time() - t}') s = generate(5, 4) clauses = formulate_sudoku(s, 5) t = time.time() assert DPLL(clauses) is not False print(f'Temps pour resoudre un sdk de // taille=5 // is {time.time() - t}')
def solve_button(self): board = self.get_board() my_sudoku = sudoku(board) solvable = my_sudoku.solve(verbose=0) if solvable: self.fill_board(my_sudoku.board) else: self.label_uns.setText('This Sudoku is not solvable!')
from random import * from dpll import * from sudoku import * print("Prazen sudoku:") print("="*20) rez = dpll(sudoku([]).cnf()) if rez==0: print("Sudoku ni rešljiv!") print("\n\n") else: print("sudoku je rešljiv. Rešitev: \n") K = [vr for vr in rez if rez[vr]==T()] vrstice = {j : {int(i[2]):int(i[4]) for i in K if i[0] == str(j)} for j in range(1,10)} for vrstica in range(1,10): elti = vrstice[vrstica] vrsta = [] for stolpc in range(1,10): vrsta.append(elti[stolpc]) print(vrsta) print("\n\n") for i in range(10): #koliko primerov bomo naredili P = randint(1, 60) #koliko bo danih polj; lahko do 81 polja = [] p = 0 while p<P: vrstica = randint(1,9) #zgeneriramo dana polja in njih vrednosti stolpec = randint(1,9)
from sudoku import * asudoku = sudoku() asudoku.generate() asudoku.display() asudoku = sudoku() asudoku.makepuzzle(40) asudoku.display() asudoku.solved() asudoku.solve() asudoku.display()
from sudoku import * from time import clock print("Primerjava DPLL algoritmov z, brez, ter z le eno začetno preverbo čiste pojavitve. \n") D = input("Primerjam DPLL s čisto pojavitvijo? (y/n) ") D1 = input("Primerjam DPLL z le eno izvedbo čiste pojavitve (takoj na začetku)? (y/n) ") DB = input("Primerjam osnoven DPLL, brez implementacije čiste pojavitve? (y/n) ") L = 0 if not (D=="n" and D1=="n" and DB=="n"): L = int(input("Koliko naključnih polnitev polj (sudokujev) zgeneriram? Vnesi naravno št.")) if not (D=="n" and D1=="n" and DB=="n"): print("\n Prazen sudoku:") print("="*25) CNF = sudoku([]).cnf() if D=="y": kopija = Cnf([Stavek([i for i in s.literali]) for s in CNF.stavki]) before1 = clock() rez1 = dpll(kopija) after1 = clock() print("Dpll z večkratno čisto pojavitvijo potrebuje {0} sec.".format(after1-before1)) if D1=="y": kopija = Cnf([Stavek([i for i in s.literali]) for s in CNF.stavki]) before2 = clock() rez2 = dpll_brez_ciste(kopija) after2 = clock() print("Dpll z enkratno čisto pojavitvijo potrebuje {0} sec.".format(after2-before2))
#author:Juned Munshi #contact: [email protected] from sudoku import * import sys #visualization .set True to visualize all steps taken to solve puzzle playback=True #initialize puzzle from file s=sudoku("puzzle.txt") initState=s.initState; print initState #create gameboard board=gameBoard("Brainy Agent solves Sudoku Problem",600,600,50,120) #display sudoku puzzle for key,value in initState.items(): board.drawText(key[0],key[1],str(value)) board.draw() print "Puzzle read successfully.Press Enter to solve puzzle" sys.stdin.read(1) #while (pygame.event.wait().type != KEYDOWN ): pass #note initial time stime=time.time() #record all the actions actions=[]
Python 3.7.4 (v3.7.4:e09359112e, Jul 8 2019, 14:54:52) [Clang 6.0 (clang-600.0.57)] on darwin Type "help", "copyright", "credits" or "license()" for more information. >>> from sudoku import* Traceback (most recent call last): File "<pyshell#0>", line 1, in <module> from sudoku import* ModuleNotFoundError: No module named 'sudoku' >>> from sudoku import * Traceback (most recent call last): File "<pyshell#1>", line 1, in <module> from sudoku import * ModuleNotFoundError: No module named 'sudoku' >>> asudoku=sudoku() Traceback (most recent call last): File "<pyshell#2>", line 1, in <module> asudoku=sudoku() NameError: name 'sudoku' is not defined >>> asudoku.generate() Traceback (most recent call last): File "<pyshell#3>", line 1, in <module> asudoku.generate() NameError: name 'asudoku' is not defined >>> asudoku.display() Traceback (most recent call last): File "<pyshell#4>", line 1, in <module> asudoku.display() NameError: name 'asudoku' is not defined >>> asudoku=sudoku() Traceback (most recent call last): File "<pyshell#5>", line 1, in <module>
from sudoku import * if __name__ == "__main__": S = sudoku() for i in range(1, 101): print("S[{:3}] :- {}".format(i, next(S)))
def main(): # root = tk.Tk(); root.withdraw() # fileName = askopenfilename(parent=root,title="Sudoku solver",filetypes=[("wav files","*.txt")]) # print os.getcwd()+"/entradas/taller3.txt" # if fileName != "": mat_read = filehandle(False,os.getcwd()+"/entradas/taller3.txt") mat_read.read_file() matriz = mat_read.get_matrix() pygame.init() size = width, height = 400, 500 screen = pygame.display.set_mode(size) background = pygame.Surface(screen.get_size()) background = background.convert() background.fill((250, 250, 250)) board, boardRect = load_image("board.png") boardRect = boardRect.move(10, 80) logo, logoRect = load_image("about.png") logoRect = logoRect.move(10, 10) puzzleNumber = int(random.random() * 20000) + 1 pygame.display.set_caption("Simulacion Computacional 2015-II") inital, current, solution = getSudoku(puzzleNumber) theSquares = [] initXLoc = 10 initYLoc = 80 startX, startY, editable, number = 0, 0, "N", 0 for x in range(len(matriz)): for y in range(len(matriz[0])): if x in (0, 1, 2): startX = (x * 41) + (initXLoc + 2) if x in (3, 4, 5): startX = (x * 41) + (initXLoc + 6) if x in (6, 7, 8): startX = (x * 41) + (initXLoc + 10) if y in (0, 1, 2): startY = (y * 41) + (initYLoc + 2) if y in (3, 4, 5): startY = (y * 41) + (initYLoc + 6) if y in (6, 7, 8): startY = (y * 41) + (initYLoc + 10) number = matriz[y][x] if number != None: editable = "N" # print "startX ", startX , "startY ", startY , "number ", number theSquares.append(SudokuSquare.SudokuSquare(number, startX, startY, editable, x, y)) currentHighlight = theSquares[0] currentHighlight.highlight() screen.blit(background, (0, 0)) screen.blit(board, boardRect) screen.blit(logo, logoRect) pygame.display.flip() while 1: for event in pygame.event.get(): if event.type == pygame.QUIT: return 0 if event.type == pygame.KEYDOWN and event.key == pygame.K_SPACE: root = tk.Tk(); root.withdraw() fileName = askopenfilename(parent=root,title="Sudoku solver",filetypes=[("wav files","*.txt")]) if fileName != "": mat_read = filehandle(False,fileName) mat_read.read_file() matriz = mat_read.get_matrix() theSquares = set_matrix(mat_read.get_matrix()) if event.type == pygame.KEYDOWN and event.key == pygame.K_F5: sdk = sudoku(True) matriz = sdk.start(matriz) theSquares = set_matrix(matriz) for num in theSquares: num.draw() if event.type == pygame.KEYDOWN and event.key == pygame.K_F9: root = tk.Tk(); root.withdraw() fileName = asksaveasfilename(parent=root,defaultextension=".txt") if fileName: mat_save = filehandle() mat_save.save_sudoku(fileName,matriz) if event.type == pygame.MOUSEBUTTONDOWN: mousepos = pygame.mouse.get_pos() for x in theSquares: if x.checkCollide(mousepos): currentHighlight.unhighlight() currentHighlight = x currentHighlight.highlight() for num in theSquares: num.draw() pygame.display.flip()