- . . , , . . [sun, mon, tue,..., sec_sat] . [q1, q2,..., q49] 49 . :
/ . : s1 [0] 1, - 1 . s3 [7] 1, - 3 . . :
import random
mon =
tue =
.........
sec_sat =
s1 = [1,1,1,1,0,0,0,1,1,1,1,0,0,0]
s2 = [0,1,1,1,1,0,0,0,1,1,1,1,0,0]
...................................
s49 = [...]
while True:
q = [0]*49
for i in range(number_of_workers):
q[random.randint(0,len(q)-1)] += 1
if (mon <= q[0]*s1[0] + q[1]*s2[0] + ... + q[48]*s49[0]) and
(tue <= q[0]*s1[1] + q[1]*s2[1] + ... + q[48]*s49[1]) and
.........................................................
(sec_sat <= q[0]*s1[13] + q[1]*s2[13] + ... + q[48]*s49[13]):
return q
import random
r = [5, 6, 7, 7, 6, 8, 5, 5, 6, 7, 7, 6, 8, 5]
s = []
s.append([0,1,1,1,1,0,0,0,1,1,1,1,0,0])
s.append([0,0,1,1,1,1,0,0,0,1,1,1,1,0])
s.append([0,0,0,1,1,1,1,0,0,0,1,1,1,1])
s.append([1,1,1,1,0,0,0,1,1,1,1,0,0,0])
s.append([0,1,1,0,1,1,0,0,1,1,0,1,1,0])
s.append([1,1,0,0,0,1,1,1,1,0,0,0,1,1])
s.append([1,1,1,0,0,0,1,1,1,1,0,0,0,1])
s.append([1,0,0,0,1,1,1,1,0,0,0,1,1,1])
number_of_shifts = len(s)
number_of_workers = 11
number_of_days = len(s[0])
while True:
q = [0]*number_of_shifts
for i in range(number_of_workers):
q[random.randint(0,len(q)-1)] += 1
t = [sum([q[j]*s[j][i] for j in range(number_of_shifts)]) for i in range(number_of_days)]
if sum([r[i] <= t[i] for i in range(number_of_days)]) == number_of_days:
print q
break
. : [0, 3, 2, 2, 1, 2, 1, 0]