Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Readable solution in Clear category for The Cheapest Flight by celtaproscrito
def cheapest_flight(costs: list, a: str, b: str) -> int:
cheapest: list[int] = []
for i in range(len(costs)):
cities = costs.copy()
city_1, city_2, price = cities.pop(i)
incr = 0
if (a == city_1 and b == city_2) or (b == city_1 and a == city_2):
cheapest.append(price)
elif a == city_1:
incr = cheapest_flight(cities, city_2, b)
elif b == city_1:
incr = cheapest_flight(cities, city_2, a)
elif a == city_2:
incr = cheapest_flight(cities, city_1, b)
elif b == city_2:
incr = cheapest_flight(cities, city_1, a)
if incr:
cheapest.append(price + incr)
if not cheapest:
return 0
return min(cheapest)
print("Example:")
print(cheapest_flight([["A", "C", 100], ["A", "B", 20], ["D", "F", 900]], "A", "F"))
# These "asserts" are used for self-checking
# assert (
# cheapest_flight([["A", "C", 100], ["A", "B", 20], ["B", "C", 50]], "A", "C") == 70
# )
# assert (
# cheapest_flight([["A", "C", 100], ["A", "B", 20], ["B", "C", 50]], "C", "A") == 70
# )
assert (
cheapest_flight(
[
["A", "C", 40],
["A", "B", 20],
["A", "D", 20],
["B", "C", 50],
["D", "C", 70],
],
"D",
"C",
)
== 60
)
assert (
cheapest_flight([["A", "C", 100], ["A", "B", 20], ["D", "F", 900]], "A", "F") == 0
)
assert (
cheapest_flight(
[["A", "B", 10], ["A", "C", 15], ["B", "D", 15], ["C", "D", 10]], "A", "D"
)
== 25
)
print("The mission is done! Click 'Check Solution' to earn rewards!")
Sept. 30, 2025
Comments: