Я пытаюсь понять эту функцию из Структур и алгоритмов практических данных с JavaScript , как видно здесь Я преобразовал ее в TypeScript здесь .
Работает на следующем игрушечном объекте:
g = {
a: ['e', 'f', 'b', 'c', 'd'],
b: ['a', 'd', 'c'],
c: ['a', 'b', 'c'],
d: ['a', 'b', 'c'],
e: ['a', 'f'],
f: ['e', 'a', 'g'],
g: ['f']
};
Но он не работает на этом объекте, который кажется достаточно похожим. Он никогда не найдет путь:
wordlist = {
a-buff_d-green: ["a-buff_dd-green_s-lilac", "d-green_a-buff_d-green", "f-mauve_a-buff_d-green", "m-orange_a-buff_d-green", "p-chestnut_a-buff_d-green", "s-limegreen_a-buff_d-green", "t-fuchsia_a-buff_d-green", "l-brightblue_a-buff_d-green", "a-buff_d-green_s-lilac", "a-buff_n-lavender_d-green", "o-white_dd-green", "e-iceblue_d-green", "i-darkpink_d-green", "a-buff_t-fuchsia", "a-buff_s-lilac", "a-buff_m-orange", "a-buff_n-lavender", "a-buff_pp-chestnut", "a-buff_l-brightblue"],
... (continued for 670 words)
}
Это то же самое, насколько я могу судить. Оба объекта имеют ключи, значения которых являются строками, соответствующими другим ключам.
В объекте wordlist
не все значения в конечном итоге приведут ко всем ключам, но startNode
и targetNode
были предварительно проверены таким образом, что к моменту вызова findPath
гарантированный путь через wordlist
учитывая начало и цель. (Еще одна функция, пройденная случайным образом; предполагается, что эта функция найдет кратчайший путь.)
Есть ли какая-то странность в отношении ключей объектов с подчеркиванием в них или что-то в этом роде? Я где-то не правильно использую аксессор? Насколько я могу судить, эти проблемы одинаковы, но когда я использую wordlist
, он никогда не находит цель.