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;