Given a set of items to install and their dependencies, return a valid install order (Course Schedule II-style topological sort), detecting when no valid order exists.
Asked in the phone screen stage. This was an algorithmic phone screen for Senior FE.
Implement install_order(items, dependencies). items is a list of unique strings. Each dependency [item, prerequisite] means prerequisite must be installed before item. Return a list containing every item exactly once in a valid order, or [] if no valid order exists. Assume every dependency names items in items.
def install_order(items, dependencies):