コード例 #1
0
ファイル: main.py プロジェクト: sacha-cs/hashcode2016
def getOrderForDrone(d):
    warehouse = warehouseByPos[d.x + d.y * columns]
    if(not warehouse.loadDrone(d)):
        ws = setup.getWarehousesByDistance(d.x, d.y, warehouses)
        addMoveToEvent(d, ws[1].x, ws[1].y, getOrderForDrone, d)
        return;
    dest = d.getDestination()
    addMoveToEvent(d, dest.x, dest.y, arrivedAt, d, dest)
コード例 #2
0
ファイル: main.py プロジェクト: sacha-cs/hashcode2016
def arrivedAt(d, dest):
    d.move(dest.x, dest.y)
    d.unload(dest)
    #TODO: go to other deliveries, but for now just go back to a warehouse
    ws = setup.getWarehousesByDistance(d.x, d.y, warehouses)
    registerEvent(currentTurn+1, addMoveToEvent, d, ws[0].x, ws[0].y, getOrderForDrone, d)
コード例 #3
0
ファイル: main.py プロジェクト: sacha-cs/hashcode2016
    d.move(dest.x, dest.y)
    d.unload(dest)
    #TODO: go to other deliveries, but for now just go back to a warehouse
    ws = setup.getWarehousesByDistance(d.x, d.y, warehouses)
    registerEvent(currentTurn+1, addMoveToEvent, d, ws[0].x, ws[0].y, getOrderForDrone, d)

def getOrderForDrone(d):
    warehouse = warehouseByPos[d.x + d.y * columns]
    if(not warehouse.loadDrone(d)):
        ws = setup.getWarehousesByDistance(d.x, d.y, warehouses)
        addMoveToEvent(d, ws[1].x, ws[1].y, getOrderForDrone, d)
        return;
    dest = d.getDestination()
    addMoveToEvent(d, dest.x, dest.y, arrivedAt, d, dest)

sortedOrders = setup.sortOrders(orders)
for order in sortedOrders:
    ws = setup.getWarehousesByDistance(order.x, order.y, warehouses)
    for p in order.products:
        #TODO: find un-doable orders
        for w in ws:
            if(w.setDestination(p, order)):
                break

for d in drones:
    registerEvent(0, getOrderForDrone, d)

for turn in range(deadline):
    currentTurn = turn
    executeEvents(turn)