// Date: 08-04-14 Khu

package Problems1Polymorphic;
// Only to be used for extensions of Problem and Solution.

public abstract class DivisibleProblemQAI implements Problem
{
   protected boolean isDirectlySolvable;

   protected abstract void checkSolvability ();

   protected abstract void divide ();
      // Precondition: !isDirectlySolvable

   protected void computeSolution ()
      // Template method.
   {
      while (true)
      {
	 checkSolvability();
	 if (isDirectlySolvable) break;
	 divide();
      }
   }
}