Compare commits

...

3 Commits

3 changed files with 104 additions and 0 deletions

View File

@@ -0,0 +1,34 @@
# See the overview from 2026.07.31.
# Note: I added Anaheim to the sample graph here. The solution should work
# appropriately with either graph.
sample_graph = {
'Santa Ana': {
'Los Angeles': 5,
'Anaheim': 3,
'Palm Springs': 50
},
'Anaheim': {
'Los Angeles': 2,
'Santa Ana': 3
},
'Los Angeles': {
'Anaheim': 2,
'San Francisco': 25,
'Santa Ana': 5
},
'Palm Springs': {
'San Francisco': 30,
'Santa Ana': 50
},
'San Francisco': {
'Los Angeles': 25,
'Palm Springs': 30
}
}
def possible_paths(start: str, end: str):
# TODO
pass
print(possible_paths('Santa Ana', 'San Francisco'))

View File

@@ -0,0 +1,49 @@
## Outline
We're working on exercise 2 from [2026.07.31](../2026.07.31/overview.md).
The exercise and starter file is included again below for convenience.
In a *weighted* road network, return all possible paths that a car can take to
reach point A to point B. For each path, also sum up the total weight that
taking that path requires.
Your algorithm should take the starting and ending points, and return a list
of tuples. Each tuple should contain the traversal from point A to point B,
followed by the total weight.
In this fictitious graph, calling `possible_paths("Santa Ana", "San Francisco")`
should yield the return below.
```python
graph = {
'Santa Ana': {
'Los Angeles': 5,
'Palm Springs': 50
},
'Los Angeles': {
'San Francisco': 25,
'Santa Ana': 5
},
'Palm Springs': {
'San Francisco': 30,
'Santa Ana': 50
},
'San Francisco': {
'Los Angeles': 25,
'Palm Springs': 30
}
}
```
```
[
(
["Santa Ana", "Los Angeles", "San Francisco"],
30
),
(
["Santa Ana", "Palm Springs", "San Francisco"],
80
)
]
```

View File

@@ -0,0 +1,21 @@
from collections import deque
# double-ended queue, this may be helpful
# see the docs: https://docs.python.org/3/library/collections.html#collections.deque
classes = {
'CPSC 230': {'CPSC 231'},
'CPSC 231': {'CPSC 350', 'CPSC 330'},
'CPSC 350': {'CPSC 380', 'CPSC 408', 'CPSC 406'},
'CPSC 330': {'CPSC 351'},
'CPSC 351': set(),
'ENGR 101': set(),
'CPSC 380': set(),
'CPSC 406': set(),
'CPSC 408': set()
}
def topological_sort(adjacency_list: dict[str, set[str]]):
# return the sorted ordering
return []
print(topological_sort(classes))