-4

逆に戻ってリストの反対側に到達できると仮定すると、リスト内の文字間の最短経路をどのように見つけますか, パックマンスタイル

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 に答える