TI/Skrypty z zajęć/7 sudoku

Z Brain-wiki
Wersja z dnia 13:39, 15 kwi 2020 autorstwa Tgub (dyskusja | edycje) (Utworzono nową stronę "<source lang="python"> # -*- coding: utf-8 -*- """ Created on Wed Apr 15 11:16:40 2020 @author: Tomek """ p = np.array([[0,0,6,0,3,0,7,0,8], [0,3,0,0,0,0...")
(różn.) ← poprzednia wersja | przejdź do aktualnej wersji (różn.) | następna wersja → (różn.)
# -*- coding: utf-8 -*-
"""
Created on Wed Apr 15 11:16:40 2020

@author: Tomek
"""

p = np.array([[0,0,6,0,3,0,7,0,8],
              [0,3,0,0,0,0,0,0,1],
              [2,0,0,0,0,0,6,0,0],
              [1,0,0,3,5,0,0,0,6],
              [0,7,9,0,4,0,1,5,0],
              [5,0,0,0,1,7,0,0,4],
              [0,0,2,0,0,0,0,0,7],
              [6,0,0,0,0,0,0,8,0],
              [4,0,7,0,6,0,2,0,0]])



def rysuj(t):
    for i in range(9):
        tab=t[i]
        print(tab[0],tab[1],tab[2],'|',tab[3],tab[4],tab[5],'|',tab[6],tab[7],tab[8])
        if (i==2) or (i==5):
            print('------+-------+------')
    print()
            
def Sudoku_tester(tab,x,y,n):
    if tab[x,y]!=0: return False
    if (n in tab[x,:]): return False
    if (n in tab[:,y]): return False
    if (n in tab[3*(x//3):3*(x//3)+3,3*(y//3):3*(y//3)+3]): return False
    return True

def sudoku(tab):
    for x in range(9):
        for y in range(9):
            if tab[x,y]==0:
                for n in range(1,10):
                    if Sudoku_tester(tab,x,y,n):
                        tab[x,y]=n
                        sudoku(tab)
                        tab[x,y]=0
                return
    rysuj(tab)
    return

sudoku(p)

#rysuj(p)
#for n in range(1,10):
#    print(n, Sudoku_tester(p,3,5,n))
    
#def silnia(n):
#    if n==0: return 1
#    return n*silnia(n-1)
#
#print(silnia(200))