Skip to content

Commit 38fe089

Browse files
Add files via upload
1 parent 39fb0a4 commit 38fe089

File tree

1 file changed

+134
-0
lines changed

1 file changed

+134
-0
lines changed

9x9.py

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,134 @@
1+
# 3x3 sudoku
2+
import random
3+
4+
5+
6+
def duplicate_checker(a):
7+
b = set(a)
8+
result = len(a) != len(b)
9+
#print(result)
10+
if(result == True):
11+
return True
12+
13+
def checkrow_horz(a):
14+
for x in a:
15+
if(duplicate_checker(x) == True):
16+
return True
17+
18+
19+
def checkrow_vert(a):
20+
for y in range(len(a)):
21+
temp = []
22+
for x in a:
23+
temp.append(x[y])
24+
if(duplicate_checker(temp) == True):
25+
return True
26+
27+
def display_grid(grid):
28+
print("")
29+
print("")
30+
print(" Martin's Sudoku")
31+
print("")
32+
count =0
33+
print(" 1 2 3 4 5 6 7 8 9")
34+
print(" ---------------------------")
35+
for x in grid:
36+
print(count+1,end=" ")
37+
for y in range(len(x)):
38+
if(y % 3 != 0):
39+
print(x[y],end=" ")
40+
else:
41+
print("|",x[y],end=" ")
42+
print("|",end=" ")
43+
count+=1
44+
print()
45+
if(count % 3 == 0):
46+
print(" ---------------------------")
47+
def rearrange(a):
48+
temp=[[],[],[],[],[],[],[],[],[]]
49+
count =0
50+
ch = 0
51+
for e in range(len(a)):
52+
for x in range(3):
53+
if(a[e][x]!=0):
54+
temp[ch].append(a[e][x])
55+
count+=1
56+
if(count ==3):
57+
ch+=1
58+
count = 0
59+
for e in range(len(a)):
60+
for x in range(3,6):
61+
if(a[e][x]!=0):
62+
temp[ch].append(a[e][x])
63+
count+=1
64+
if(count ==3):
65+
ch+=1
66+
count = 0
67+
for e in range(len(a)):
68+
for x in range(6,9):
69+
if(a[e][x]!=0):
70+
temp[ch].append(a[e][x])
71+
count+=1
72+
if(count ==3):
73+
ch+=1
74+
count = 0
75+
return temp
76+
def scramble():
77+
global grid
78+
amount = 40
79+
80+
for i in range(amount):
81+
y = random.randint(0,len(grid)-1)
82+
x = random.randint(0,len(grid)-1)
83+
num = random.randint(1,len(grid))
84+
allow = 0
85+
for e in range(len(grid)):
86+
if num not in grid[x] and num != grid[e][y]:
87+
allow +=1
88+
grid[x][y] = num
89+
tempo = grid
90+
tempo = rearrange(tempo)
91+
92+
for e in range(len(grid)):
93+
if(duplicate_checker(tempo[e])):
94+
allow = 0
95+
if allow !=len(grid):
96+
grid[x][y] = 0
97+
98+
99+
100+
101+
102+
103+
grid = [[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0],[0,0,0,0,0,0,0,0,0]]
104+
105+
solved = False
106+
scramble()
107+
display_grid(grid)
108+
109+
110+
while solved != True:
111+
x = int(input("enter horizontal [1,9]"))-1
112+
y = int(input("enter vertical [1,9] "))-1
113+
114+
num = int(input("enter number"))
115+
116+
if grid[y][x] == 0:
117+
grid[y][x] = num
118+
else:
119+
if input("overwrite? [y/n]") == "y":
120+
grid[y][x] = num
121+
122+
display_grid(grid)
123+
full = True
124+
for x in grid:
125+
for y in x:
126+
if(y == 0):
127+
full = False
128+
if(full ==True):
129+
if(checkrow_horz(grid)==True or checkrow_vert(grid) == True):
130+
print("try again")
131+
else:
132+
print("solved")
133+
solved =True
134+

0 commit comments

Comments
 (0)