假设您可以倒退并最终到达列表的另一侧,您将如何找到列表中字母之间的最短路径,Pacman Style
letters = ['a', 'd', 'e', 'l', 's']
letters.loopDistance('a', 's')
返回 1
letters.loopDistance('a', 'l')
返回 2
假设您可以倒退并最终到达列表的另一侧,您将如何找到列表中字母之间的最短路径,Pacman Style
letters = ['a', 'd', 'e', 'l', 's']
letters.loopDistance('a', 's')
返回 1
letters.loopDistance('a', 'l')
返回 2
找到向前的距离(必要时环绕)。如果这超过了列表长度的一半,那么向另一个方向移动将涉及更短的距离,您可以立即通过从列表长度中减去来计算。
如果字母可以出现不止一次,事情会变得有点复杂,主要是因为你想要的答案是模棱两可的。
def distance(l, first, second):
ifirst = l.index(first)
isecond = l.index(second)
return min((ifirst - isecond) % len(l), (isecond - ifirst) % len(l))
基本上,您测量两个方向的距离并选择最小的。