- 论坛徽章:
- 4
|
本帖最后由 ssfjhh 于 2013-03-14 21:28 编辑
回复 11# ssfjhh
ls的代码是不对的,没有考虑到两只蚂蚁可能在非整数的位置相遇的情况。修改代码如下。- def ant(m, *position):
- t = 0
- p = {i:i for i in position}
- temp = []
- result = []
- x = []
- while True:
- t += 1
- x = sorted(((k,v) for k,v in p.items()), key = lambda j: abs(j[1]))
- for i in range(len(x)-1):
- if x[i][1] > 0 and x[i+1][1] < 0 and x[i+1][1] + x[i][1] > -2:
- p[x[i][0]] = x[i+1][1]
- p[x[i+1][0]] = x[i][1]
- p = {k:v+1 for k,v in p.items()}
- for i in tuple(p.keys()):
- if abs(p[i]) in (0,m):
- result.append((i,t))
- p.pop(i)
- if p == {}:
- return result
- temp = [abs(i) for i in p.values()]
- for k,v in p.items():
- if temp.count(abs(v)) == 2:
- p[k] = -v
-
- print(ant(27,3,-7,11,-17,23))
复制代码 这段代码的运行结果如下:- [(23, 4), (-7, 7), (-17, 16), (3, 17), (11, 24)]
复制代码 程序的原理是蚂蚁的初始位置为整数位置,那么在整数秒数时一定在整数位置。 |
|