-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathgenerate.py
118 lines (101 loc) · 5.6 KB
/
generate.py
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
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
from math import comb
path = 'u:/ChessCounter/'
f = open(path + 'combsWB.txt','w')
for w in range(0, 16):
for b in range(0, 16):
f.write(str(w*16+b)+'\n')
f.write(str(float(comb(62,w)*comb(62-w,b)*5**(w+b)))+'\n')
f.close()
f = open(path + 'combs.txt','w')
for p in range(0, 31):
f.write(str(p)+'\n')
f.write(str(float(comb(62,p)*10**p))+'\n')
f.close()
f = open(path + 'restricted.txt','w')
c = 0
sum = 0
xmax = 0
tmax = 0
pawnConfigs = 8+1
bishopConfigs = 2+1
knightConfigs = 2+1
rookConfigs = 2+1
queenConfigs = 3+1
for wp in range(0, pawnConfigs):
for bp in range(0, pawnConfigs):
for wn in range(0, knightConfigs):
for bn in range(0, knightConfigs):
for wb in range(0, bishopConfigs):
for bb in range(0, bishopConfigs):
for wr in range(0, rookConfigs):
for br in range(0, rookConfigs):
for wq in range(0, min(min(queenConfigs,16-wp-wn-wb-wr),31-wp-wn-wb-wr-bp-bn-bb-br)):
for bq in range(0, min(min(queenConfigs,16-bp-bn-bb-br),31-wp-wn-wb-wr-bp-bn-bb-br-wq)):
c += 1
x = comb(62,wp) * comb(62-wp,bp) * comb(62-wp-bp,wn) * comb(62-wp-bp-wn,bn) * comb(62-wp-bp-wn-bn,wb) * comb(62-wp-bp-wn-bn-wb,bb) *\
comb(62-wp-bp-wn-bn-wb-bb,wr) * comb(62-wp-bp-wn-bn-wb-bb-wr,br) * comb(62-wp-bp-wn-bn-wb-bb-wr-br,wq) * comb(62-wp-bp-wn-bn-wb-bb-wr-br-wq,bq)
sum += x
t = wp+bp+wn+bn+bb+wr+br+wq+bq
if t>tmax:
tmax = t
print(tmax)
if (x>xmax):
xmax = x
print(xmax, wp,bp,wn,bn,wb,bb,wr,br,wq,bq)
f.write(str(bq+wq*queenConfigs
+br*queenConfigs*queenConfigs
+wr*queenConfigs*queenConfigs*rookConfigs
+bb*queenConfigs*queenConfigs*rookConfigs*rookConfigs
+wb*queenConfigs*queenConfigs*rookConfigs*rookConfigs*bishopConfigs
+bn*queenConfigs*queenConfigs*rookConfigs*rookConfigs*bishopConfigs*bishopConfigs
+wn*queenConfigs*queenConfigs*rookConfigs*rookConfigs*bishopConfigs*bishopConfigs*knightConfigs
+bp*queenConfigs*queenConfigs*rookConfigs*rookConfigs*bishopConfigs*bishopConfigs*knightConfigs*knightConfigs
+wp*queenConfigs*queenConfigs*rookConfigs*rookConfigs*bishopConfigs*bishopConfigs*knightConfigs*knightConfigs*pawnConfigs)+'\n')
f.write(str(float(x))+'\n')
print(3612*2*sum, c)
print(float(3612*2*sum))
f.close()
f = open(path + 'veryRestricted.txt','w')
c = 0
sum = 0
xmax = 0
tmax = 0
pawnConfigs = 8+1
bishopConfigs = 2+1
knightConfigs = 2+1
rookConfigs = 2+1
queenConfigs = 1+1
for wp in range(0, pawnConfigs):
for bp in range(0, pawnConfigs):
for wn in range(0, knightConfigs):
for bn in range(0, knightConfigs):
for wb in range(0, bishopConfigs):
for bb in range(0, bishopConfigs):
for wr in range(0, rookConfigs):
for br in range(0, rookConfigs):
for wq in range(0, min(min(queenConfigs,16-wp-wn-wb-wr),31-wp-wn-wb-wr-bp-bn-bb-br)):
for bq in range(0, min(min(queenConfigs,16-bp-bn-bb-br),31-wp-wn-wb-wr-bp-bn-bb-br-wq)):
c += 1
x = comb(62,wp) * comb(62-wp,bp) * comb(62-wp-bp,wn) * comb(62-wp-bp-wn,bn) * comb(62-wp-bp-wn-bn,wb) * comb(62-wp-bp-wn-bn-wb,bb) * \
comb(62-wp-bp-wn-bn-wb-bb,wr) * comb(62-wp-bp-wn-bn-wb-bb-wr,br) * comb(62-wp-bp-wn-bn-wb-bb-wr-br,wq) * comb(62-wp-bp-wn-bn-wb-bb-wr-br-wq,bq)
sum += x
t = wp+bp+wn+bn+bb+wr+br+wq+bq
if t>tmax:
tmax = t
print(tmax)
if (x>xmax):
xmax = x
print(xmax, wp,bp,wn,bn,wb,bb,wr,br,wq,bq)
f.write(str(bq+wq*queenConfigs
+br*queenConfigs*queenConfigs
+wr*queenConfigs*queenConfigs*rookConfigs
+bb*queenConfigs*queenConfigs*rookConfigs*rookConfigs
+wb*queenConfigs*queenConfigs*rookConfigs*rookConfigs*bishopConfigs
+bn*queenConfigs*queenConfigs*rookConfigs*rookConfigs*bishopConfigs*bishopConfigs
+wn*queenConfigs*queenConfigs*rookConfigs*rookConfigs*bishopConfigs*bishopConfigs*knightConfigs
+bp*queenConfigs*queenConfigs*rookConfigs*rookConfigs*bishopConfigs*bishopConfigs*knightConfigs*knightConfigs
+wp*queenConfigs*queenConfigs*rookConfigs*rookConfigs*bishopConfigs*bishopConfigs*knightConfigs*knightConfigs*pawnConfigs)+'\n')
f.write(str(float(x))+'\n')
print(3612*2*sum, c)
print(float(3612*2*sum))
f.close()