Vanta Coding Interview Task Dependency Resolution
Interview Experience
from typing import List class Task: def init(self, id: str, deps: List[str]): self.id = id self.deps = deps """ web:deploy-------------------------------- | v web:test | web-client:test | v web:bu
Full Details
from typing import List class Task: def init(self, id: str, deps: List[str]): self.id = id self.deps = deps """ web:deploy-------------------------------- | v web:test | web-client:test | v web:build <------- web-client:build """ allTasks = [ Task( id="web:build", deps=[], ), Task( id="web:test", deps=["web:build"], ), Task( id="web:deploy", deps=["web:test", "web:build", "web-client:test"], ), Task( id="web-client:build", deps=[], ), Task( id="web-client:test", deps=["web-client:build"], ), ] # Given a list of requested tasks to run, output a list of all necessary tasks # to run, in a proper order. #Input: # allTasks: a list of all task configurations # tasksToRun: ids of requested tasks to run # Output: a list of task ids to run, in a proper order # Requirements: # - Must be correct # - Must be performant on large graphs # - Code should be easy to read def getTasksToRun(allTasks: List[Task], tasksToRun: List[str]) -> List[str]: return [] print(getTasksToRun(allTasks, ["web:test"])) # ["web:build", "web:test"] print(getTasksToRun(allTasks, ["web:test", "web:build"])) # ["web:build", "web:test"] Copy code