mirror of
https://github.com/freeCodeCamp/freeCodeCamp.git
synced 2026-04-28 22:00:47 -04:00
2.6 KiB
2.6 KiB
id, title, challengeType, dashedName
| id | title | challengeType | dashedName |
|---|---|---|---|
| 6559d86fe1b8947954b9178d | Крок 56 | 20 | step-56 |
--description--
Тепер краще, але непотрібно друкувати деталі про початковий вузол.
Додайте інструкцію if перед викликом print, яка виконуватиметься, якщо node дорівнює start та використайте ключове слово continue, щоб перейти до наступної ітерації циклу.
--hints--
Вкладіть інструкцію if, щоб перевірити, що node дорівнює start в межах циклу for.
({ test: () => {
const shortest = __helpers.python.getDef(code, "shortest_path");
const {function_body} = shortest;
assert(function_body.match(/^(\s{4})for\s+node\s+in\s+targets_to_print\s*:\s*^\1\1if\s+(node\s*==\s*start|start\s*==\s*node)\s*:/m));
}
})
Використайте ключове слово continue, щоб перейти до наступної ітерації в новій інструкції if.
({ test: () => {
const shortest = __helpers.python.getDef(code, "shortest_path");
const {function_body} = shortest;
assert(function_body.match(/^(\s{4})for\s+node\s+in\s+targets_to_print\s*:\s*^\1\1if\s+(node\s*==\s*start|start\s*==\s*node)\s*:\s*^\1\1\1continue/m));
}
})
--seed--
--seed-contents--
my_graph = {
'A': [('B', 3), ('D', 1)],
'B': [('A', 3), ('C', 4)],
'C': [('B', 4), ('D', 7)],
'D': [('A', 1), ('C', 7)]
}
def shortest_path(graph, start, target = ''):
unvisited = list(graph)
distances = {node: 0 if node == start else float('inf') for node in graph}
paths = {node: [] for node in graph}
paths[start].append(start)
while unvisited:
current = min(unvisited, key=distances.get)
for node, distance in graph[current]:
if distance + distances[current] < distances[node]:
distances[node] = distance + distances[current]
if paths[node] and paths[node][-1] == node:
paths[node] = paths[current][:]
else:
paths[node].extend(paths[current])
paths[node].append(node)
unvisited.remove(current)
--fcc-editable-region--
targets_to_print = [target] if target else graph
for node in targets_to_print:
print(f'\n{start}-{node} distance: {distances[node]}\nPath: {" -> ".join(paths[node])}')
shortest_path(my_graph, 'A')
--fcc-editable-region--