'''
有一根长27厘米的细木杆,
在第3厘米、7厘米、11厘米、17厘米、23厘米这五个位置上各有一只蚂蚁。
木杆很细,不能同时通过两只蚂蚁。
开始时,蚂蚁的头朝左还是朝右是任意的,它们只会朝前走或调头,但不会后退。
当任意两只蚂蚁碰头时,两只蚂蚁会同时调头朝反方向走。
假设蚂蚁们每秒钟可以走一厘米的距离,求所有蚂蚁都离开木杆的最短时间和最长时间。
'''
all_time_list=[]
zero_list=[None,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,None]
def move_left(lis,i):
list=lis
i=int(i)
a = lis.index(i)
if list[a-1] != None:
list[a-1] = i
list[a] = 0
return list
def move_right(lis,i):
list=lis
i=int(i)
a=lis.index(i)
if list[a+1] !=None:
list[a + 1] = i
list[a] = 0
return list
sta=[0,1]
#0=left 1=right
for i in sta:
for j in sta:
for r in sta:
for m in sta:
for n in sta:
list = [None,0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 5, 0, 0, 0,None]
sta_list=[None,i,j,r,m,n]
num_list = [1, 2, 3, 4, 5]
a=0
while True:
if list == zero_list:
all_time_list.append(a)
break
if list !=zero_list:
for num in num_list:
if num in list:
if list[list.index(num) + 1] == 0 and sta_list[num] == 1:
list = move_right(list, num)
else:
if list[list.index(num) + 1] != 0 and sta_list[num] == 1:
if list[list.index(num) + 1] == None:
list = move_right(list, num)
else:
list = move_left(list, num)
sta_list[num] = 0
sta_list[list[list.index(num) + 1]] = 1
else:
if list[list.index(num) - 1] == 0 and sta_list[num] == 0:
list = move_left(list, num)
else:
if list[list.index(num) - 1] != 0 and sta_list[num] == 0:
if list[list.index(num) - 1] == None:
list = move_left(list, num)
else:
list = move_right(list, num)
sta_list[num] = 1
if list.index(num) - 1 != 0:
sta_list[list[list.index(num) - 1]] = 0
a += 1
print(min(all_time_list))
print(max(all_time_list))
正确答案是11,24
程序输出为:12,25
求指导