forked from ramwin/python-reference
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathshudu.py
More file actions
executable file
·89 lines (88 loc) · 2.41 KB
/
shudu.py
File metadata and controls
executable file
·89 lines (88 loc) · 2.41 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
# !/usr/bin/env python
# -*- coding:utf-8 -*-
import pprint
def single(i,j,array,n):
posible=array[i][j]
otherrow = range(n)
otherrow.remove(i)
othercolumn = range(n)
othercolumn.remove(j)
for row in otherrow:
if len(array[row][j]) ==1:
try:
posible.remove(array[row][j][0])
except:
pass
for column in othercolumn:
if len(array[i][column]) ==1:
try:
posible.remove(array[i][column][0])
except:
pass
array[i][j]=posible
return array
def single2(i,j,array,n):
t = array[:]
allone = []
for k in range(3*i,3*i+3):
for l in range(3*j,3*j+3):
if len(array[k][l])==1:
allone.append(array[k][l][0])
for k in range(3*i,3*i+3):
for l in range(3*j,3*j+3):
if len(array[k][l])>1:
for m in allone:
try:
array[k][l].remove(m)
except:
pass
return array
def insert(array,n):
# 利用横竖不能有重复来判断
for i in range(n):
for j in range(n):
array = single(i,j,array,n)
# 利用一个小框里面不能有重复来判断 9宫格特有
for i in range(3):
for j in range(3):
array = single2(i,j,array,n)
return array
def main():
n=9 # 设定几宫格
file = open('shudu.csv','r')
linelist = file.readlines()
array = []
for i in range(n):
array.append([])
for j in range(n):
array[i].append([])
for i in range(n):
oneline = linelist[i][:-1].split(',')
for j in range(n):
try:
array[i][j] = [int(oneline[j])]
except:
array[i][j] = [1,2,3,4,5,6,7,8,9]
cont = True
while cont:
num = 0
cont = False
for i in range(n):
for j in range(n):
if len(array[i][j]) > 1:
num += 1
cont = True
array = insert(array,9)
import time
time.sleep(1)
print '还有%d个空格没填'%(num)
if num == 2:
break
return array
if __name__ == '__main__':
list = main()
pprint.pprint(list)
# for i in len(list):
# for j in len(i):
# print(list[i][j]),
# print()