package ch21concurrent.examples;
import java.util.*;
/**
* Puzzle
* <p/>
* Abstraction for puzzles like the 'sliding blocks puzzle'
*
* @author Brian Goetz and Tim Peierls
*/
public interface Puzzle<P, M> {
P initialPosition();
boolean isGoal(P position);
Set<M> legalMoves(P position);
P move(P position, M move);
}