packages feed

swarm-0.3.0.0: data/scenarios/Challenges/_ice-cream/solution.sw

def serveCustomer = \cone. \customer.
    give customer cone;
    end;

def getCounter =
    move;
    c <- grab;
    equip c;
    end;

def getBriefcase =
    turn left;
    move;
    move;
    b <- grab;
    equip b;
    turn back;
    move;
    move;
    end;

def getIngredients =
    move;
    move;
    cone <- grab;
    move;
    cherry <- grab;
    turn back;
    move;
    move;
    move;
    turn right;
    return (cone, cherry);
    end;

def meetCustomer =
    maybeCustomer <- meet;
    case maybeCustomer (\_. meetCustomer) return;
    end;

def serveScoop = \customer.
    let s = "scoop" in
    make s;
    give customer s;
    end;

def scoopUntil = \customer. \targetRemainingIngredientCount.
    currentCount <- count "milk";
    if (currentCount > targetRemainingIngredientCount) {
        serveScoop customer;
        scoopUntil customer targetRemainingIngredientCount;
    } {};
    end;

def runSolution = \targetRemainingIngredientCount.
    getBriefcase;
    coneAndCherry <- getIngredients;
    getCounter;
    customer <- meetCustomer;

    let cone = fst coneAndCherry in
    let cherry = snd coneAndCherry in
    serveCustomer cone customer;
    scoopUntil customer targetRemainingIngredientCount;
    give customer cherry;
    end;

runSolution 2712;