Example #1
0
  public static void main(final String[] args) {

    // http://www.telegraph.co.uk/news/science/science-news/9359579/Worlds-hardest-sudoku-can-you-crack-it.html
    final Integer[] data = {
      8, 0, 0, 0, 0, 0, 0, 0, 0,
      0, 0, 3, 6, 0, 0, 0, 0, 0,
      0, 7, 0, 0, 9, 0, 2, 0, 0,
      0, 5, 0, 0, 0, 7, 0, 0, 0,
      0, 0, 0, 0, 4, 5, 7, 0, 0,
      0, 0, 0, 1, 0, 0, 0, 3, 0,
      0, 0, 1, 0, 0, 0, 0, 6, 8,
      0, 0, 8, 5, 0, 0, 0, 1, 0,
      0, 9, 0, 0, 0, 0, 4, 0, 0
    };

    final ISudokuGrid puzzle = new SudokuGrid(data);
    final ISolver solver = new Solver(puzzle);

    final long start = System.currentTimeMillis();
    final boolean solved = solver.solve();
    final long finish = System.currentTimeMillis();

    if (solved) {
      System.out.print(puzzle);

      final long elapsed = finish - start;
      final double seconds = (double) elapsed / 1000.0 + (double) (elapsed % 1000L) / 1000.0;

      System.out.format("\n\nTime taken %f seconds\n", seconds);
    } else {
      System.out.println("No solution exists");
    }
  }
Example #2
0
 @Override
 public IResponse execute(ISolver solver) {
   SMT.Configuration smtConfig = solver.smt();
   if (!(solver instanceof Solver_test)) {
     return smtConfig.responseFactory.error(
         "This kind of solver (" + solver.getClass() + ") is not able to execute a what command",
         null);
   }
   IPrinter printer = smtConfig.defaultPrinter;
   SymbolTable symTable = ((Solver_test) solver).symTable;
   Iterator<IIdentifier> iter = ids().iterator();
   if (!iter.hasNext()) {
     // No arguments - print everything in the symbol table
     SymbolTable.Iterator symiter = symTable.iterator();
     while (symiter.hasNext()) {
       SymbolTable.Entry n = symiter.next();
       smtConfig.log.logOut(printer.toString(n.name) + " : " + printer.toString(n.sort));
     }
   } else {
     while (iter.hasNext()) {
       IIdentifier s = iter.next();
       ISort.IDefinition sortDef = symTable.lookupSort(s);
       if (sortDef != null)
         smtConfig.log.logOut(printer.toString(s) + " : " + printer.toString(sortDef));
       else {
         Map<Integer, List<SymbolTable.Entry>> map = symTable.lookup(s);
         if (map != null && map.size() != 0) {
           for (List<SymbolTable.Entry> entrylist : map.values()) {
             for (SymbolTable.Entry entry : entrylist) {
               smtConfig.log.logOut(printer.toString(s) + " : " + printer.toString(entry.sort));
             }
           }
         } else {
           smtConfig.log.logOut(printer.toString(s) + " : -no entry- ");
         }
       }
     }
   }
   return smtConfig.responseFactory.success();
 }