-4

假设您可以倒退并最终到达列表的另一侧,您将如何找到列表中字母之间的最短路径,Pacman Style

letters = ['a', 'd', 'e', 'l', 's']
letters.loopDistance('a', 's')

返回 1

letters.loopDistance('a', 'l')

返回 2

4

2 回答 2

3

找到向前的距离(必要时环绕)。如果这超过了列表长度的一半,那么向另一个方向移动将涉及更短的距离,您可以立即通过从列表长度中减去来计算。

如果字母可以出现不止一次,事情会变得有点复杂,主要是因为你想要的答案是模棱两可的。

于 2013-02-04T18:15:19.083 回答
0
def distance(l, first, second):
    ifirst = l.index(first)
    isecond = l.index(second)
    return min((ifirst - isecond) % len(l), (isecond - ifirst) % len(l))

基本上,您测量两个方向的距离并选择最小的。

于 2013-02-04T18:20:42.517 回答