Python:找到最短的距离,以在列表中找到另一个索引,假设您可以向后移动

2024-09-29 20:24:37 发布

您现在位置:Python中文网/ 问答频道 /正文

假设你可以倒转到列表的另一边,Pacman风格,你如何找到列表中字母之间的最短路径

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

返回1

^{pr2}$

返回2


Tags: 路径列表风格字母pacmanletterspr2loopdistance
2条回答

找到向前的距离(如有必要,可绕开)。如果这个长度超过列表长度的一半,那么往另一个方向移动会涉及到一个较短的距离,您可以通过从列表长度中减去该距离来立即进行计算。在

如果这些字母可以出现不止一次,事情就更复杂了,主要是因为你想要的答案模棱两可。在

def distance(l, first, second):
    ifirst = l.index(first)
    isecond = l.index(second)
    return min((ifirst - isecond) % len(l), (isecond - ifirst) % len(l))

基本上,你测量两个方向的距离,然后选择最小的。在

相关问题 更多 >

    热门问题