Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Second solution in Clear category for Delivery Drone by pokosasa
from typing import List
from heapq import heappop,heappush
def delivery_drone(orders: List[int]) -> int:
todo={(s,t) for s,t in enumerate(orders) if t!=0}
distance,position,todo=0,0,todo
prevs=[(distance,position,todo)]
while prevs:
distance,position,todo=heappop(prevs)
if todo==set():
if position!=0:
heappush(prevs,(distance+position,0,set()))
continue
else:
return distance
for s,t in todo:
heappush(prevs,(distance+abs(position-s)+abs(s-t),t,todo-{(s,t)}))
if __name__ == '__main__':
assert delivery_drone([0, 2, 0]) == 4
assert delivery_drone([0, 0, 1, 2]) == 6
assert delivery_drone([0, 2, 4, 0, 1, 0, 5]) == 12
print('The local tests are done. Click on "Check" for more real tests.')
Nov. 21, 2019