Un robot con un numero limitato di bracci si può muovere tra diverse
locazioni e prendere e lasciare delle palle (al massimo una per ogni
braccio).
Le azioni primitive sono:
- go(X,Y): il robot va dal posto X al posto Y;
- pick(X,Y,Z): il robot prende la palla X che si trova nel
posto Y con il braccio Z;
- drop(X,Y,Z): il robot lascia nel posto Y
la palla X che tiene con il braccio Z.
I fuenti sono:
- atRobby(X,S): il robot si trova nel posto X;
- at(X,Y,S): la palla X si trova nel posto Y;
- free(X,S): il braccio X del robot è libero;
- carry(X,Y,S): il robot tiene la palla X con il braccio Y.
Formalizzare il dominio e scrivere le procedure seguenti:
- vai(To): il robot va nel posto To (non fa nulla se già
si trova in To).
- scarica(Loc): il robot lascia tutte le palle che tiene in
qualche braccio nel posto Loc. La procedura fallisce se il robot non
si trova in Loc.
- carica(Loc): il robot prende dalla locazione Loc tutte le
palle che può prendere. La procedura
fallisce se il robot non si trova in Loc.
- sposta(From,To): il robot sposta nel posto To
tutte le palle che si
trovano nel posto From.
Soluzione proposta
marta
2012-04-17