defdo_squares(h,v,n):#h,v是一个矩阵deftest(i,j,l):
_i = i;_j = j
while(_j<j+l):
if(h[_i][_j]==0):returnFalse
_j+=1while(_i<i+l):
if(v[_i][_j]==0):returnFalse
_i+=1while(_j>j):
if(h[_i][_j-1]==0):returnFalse
_j-=1while(_i>i):
if(v[_i-1][_j]==0):returnFalse
_i-=1returnTrue
count = [0]*(n-1)
for i in range(1,n-1):
for j in range(1,n-1):
for length in range(1,n-1):#长度从1-n-1if(test(i,j,length)):count[length]+=1for k in range(1,n-1):
if(count[k]!=0):print('Number of suqare with length(%d) : %d'%(k,count[k]))
defsquares(h,v,n):
H = [ [0]*(n+1) for i in range(n+1)]
V = [ [0]*(n+1) for j in range(n+1)]
for x in h:H[x[0]][x[1]] = 1for y in v:V[y[0]][y[1]] = 1
do_squares(H,V,n+1)
squares([(1,1),(1,3),(2,1),(2,2),(2,3),(3,2),(4,2),(4,3)]
,[(1,1),(1,2),(2,2),(3,2),(2,3),(1,4),(2,4),(3,4)],4)
def Cube(a,b):
X = [[a[0],a[5]],[a[1],a[4]],[a[2],a[3]]]
Y = [[b[0],b[5]],[b[1],b[4]],[b[2],b[3]]]
for i in range(3):
X[i].sort();Y[i].sort()
X.sort();Y.sort()
print(X==Y)
Cube('grggrb','rggbgr')
习题4-5:IP地址求最大子网和子网掩码,没啥好说的,直接求解.
defconvert(x):
ans = ''
tmp = x.split('.')
for each in tmp:
tmp_ans = bin(int(each))[2:]
ans += '0'*(8-len(tmp_ans))+tmp_ans
return ans
defrecovert(y):
ans = ''for i in range(0,32,8):
ans += str(int(y[i:i+8],base = 2))+'.'return ans[:-1]
defsolve(IP):
net = convert(IP[0])
for each_ip in IP[1:]:
tmp = convert(each_ip)
for i in range(len(net)):
if(tmp[i]!=net[i]):net = net[:i];break
mask = '1'*len(net)+'0'*(32-len(net))
net += '0'*(32-len(net))
print('%s*********************%s'%(recovert(net),recovert(mask)))
solve(['194.85.160.183','194.85.160.177','194.85.160.178'])
defTired_students(students):
n = len(students)
A = [students[i][0] for i in range(n)]
B = [students[i][1] for i in range(n)]
C = [students[i][2]-0.5for i in range(n)]
print(A,B,C)
time = 1
sleeped = 0
initial_c = C[:]
tmp = [1]*n
for i in range(n):
if(C[i]>A[i]):sleeped += 1;tmp[i] = 0
print(sleeped,tmp)
while(sleeped !=0):
time += 1
tmp_sleeped = 0for i,each in enumerate(C):#遍历每一个学生的情况
C[i] = (C[i]+1)%(A[i]+B[i])#获取当前在周期里面的位置if(C[i]>A[i]):#到了睡觉时间if(tmp[i] == 1):#上一刻处于听课if(2*sleeped > n):#满足睡觉条件
tmp[i] = 0
tmp_sleeped += 1else:
C[i] = 0#在睡觉A[i]分钟elif(tmp[i]==0):#到了醒来的时间#上一刻处于睡觉状态
tmp[i] = 1
tmp_sleeped -= 1
sleeped += tmp_sleeped
print('the %d分钟: '%time,tmp,sleeped,C)#测试情况if(initial_c == C and sleeped != 0):return -1#不会有这个时刻return time