Approximator 2000
by jpistole

Approximator 2000 (Approximator to his friends) endeavors to find exact
solutions to the problems in his everyday life such as which packages to
pick up and what route to take to deliver them, but realizes that in order
to keep to his busy schedule of 1 CPU second per turn, he must sometimes
make approximations. This is his story.

Approximator's daily routine starts with a check to see if he has any packages
that should be delivered to his current location. If he does, then he drops 
them off immediately. Delivering packages is what Approximator lives for. If
he has no packages to deliver to his current location, Approximator checks to
see if there are any packages at his current location that are waiting to
be taken out for delivery or have been abandoned by other, less sensitive
and caring robots. If there are, Approximator picks up whatever he can carry.
If there aren't any packages to pick up, Approximator goes along his merry
way. If he's already worked out a path to his destination, he pulls out his
trusty map, and takes the next step he's planned out. If he doesn't have a
path planned out, Approximator decides whether to head for a destination to
deliver a package, or to head for a base station to pick up more packages.
all of his deliveries first, and only heads for a base station when he is
not carrying any packages. Approximator decides which package to deliver
based on its weight and the distance to its destination (even a robot's arms
get tired). Approximator chooses which base station to head for based on
how many packages he knows it has and how far away it is. When he's picked
his destination, Approximator tries to find the very best path to get there,
but sometimes it's so far away and the paths are so twisty and turning that
Approximator would have to spend all day staring at his map to figure out the
best way to get there. So, when it's too hard to find the best way to his
destination, Approximator just wanders around randomly (making sure not to
run into any walls or, even worse, fall into a lake) until he gets close
enough to his destination that he can find a sure-fire path to het him there.

In general, Approximator is a nice and friendly robot. He likes to keep to
his schedule, but he doesn't push and shove other robots. But, if it looks
like another robot is going to push him (especially if it's into water),
Approximator doesn't wait around to find out.

Approximator was programmed in ocaml on a PowerBook G4.
