PageRenderTime 34ms CodeModel.GetById 12ms RepoModel.GetById 0ms app.codeStats 0ms

/ComputerAlgebra/Satisfiability/Lisp/Generators/docus/Sudoku.hpp

https://github.com/MLewsey/oklibrary
C++ Header | 67 lines | 0 code | 2 blank | 65 comment | 0 complexity | eff42776e34c1692a6878aa3f12b0420 MD5 | raw file
  1. // Oliver Kullmann, 1.11.2008 (Swansea)
  2. /* Copyright 2008 Oliver Kullmann
  3. This file is part of the OKlibrary. OKlibrary is free software; you can redistribute
  4. it and/or modify it under the terms of the GNU General Public License as published by
  5. the Free Software Foundation and included in this library; either version 3 of the
  6. License, or any later version. */
  7. /*!
  8. \file ComputerAlgebra/Satisfiability/Lisp/Generators/docus/Sudoku.hpp
  9. \brief How to use the Sudoku generator functions
  10. <h1> Sudoku via Maxima in the OKlibrary </h1>
  11. <h2> Generating problem instances </h2>
  12. \verbatim
  13. (%i1) oklib_load_all();
  14. (%i2) S3 : strong_sdk(3)$
  15. (%i3) P100 : map(set,{sdk(1,3,5),sdk(1,7,1),sdk(1,9,8),sdk(2,4,5),sdk(2,8,3),
  16. sdk(3,5,8),sdk(3,6,9),sdk(3,7,4),sdk(4,3,9),sdk(4,5,1),sdk(4,6,4),sdk(4,9,2),
  17. sdk(6,1,2),sdk(6,4,3),sdk(6,5,6),sdk(6,7,7),sdk(7,3,7),sdk(7,4,2),sdk(7,5,9),
  18. sdk(8,2,8),sdk(8,6,5),sdk(9,1,3),sdk(9,3,4),sdk(9,7,6)});
  19. (%i4) SP100 : [S3[1],union(S3[2],P100)]$
  20. (%i5) sSP100 : standardise_fcs(SP100)$
  21. (%i6) output_fcs_v(
  22. sconcat("The Sudoku problem (strong form) with box-dimension ", 3, ", with initial constraints from Problem 100 in [extreme Sudoku, Gould]."),
  23. sSP100[1],"SP100.cnf",sSP100[2]);
  24. (%i7) P120 : map(set,{sdk(1,1,8),sdk(1,5,5),sdk(1,9,2),sdk(2,3,3),sdk(2,5,4),
  25. sdk(2,7,8),sdk(3,3,4),sdk(3,4,8),sdk(3,6,7),sdk(3,7,3),sdk(4,1,5),sdk(4,5,9),
  26. sdk(4,9,8),sdk(5,2,6),sdk(5,8,9),sdk(6,1,1),sdk(6,5,2),sdk(6,9,5),sdk(7,3,1),
  27. sdk(7,4,6),sdk(7,6,9),sdk(7,7,5),sdk(8,3,5),sdk(8,5,8),sdk(8,7,9),sdk(9,1,3),
  28. sdk(9,5,1),sdk(9,9,4)});
  29. (%i8) SP120 : [S3[1],union(S3[2],P120)]$
  30. (%i9) fcs_p(SP120);
  31. Evaluation took 165.0739 seconds (189.7842 elapsed) using 438.141 MB.
  32. (%o9) true
  33. (%i10) sSP120 : standardise_fcs(SP120)$
  34. (%i11) output_fcs_v(
  35. sconcat("The Sudoku problem (strong form) with box-dimension ", 3, ", with initial constraints from Problem 120 in [extreme Sudoku, Gould]."),
  36. sSP120[1],"SP120.cnf",sSP120[2]);
  37. \endverbatim
  38. <h2> Solving problem instances </h2>
  39. Via the C-OKsolver-2002:
  40. \verbatim
  41. > OKsolver_2002-O3-DNDEBUG SP100.cnf
  42. s SATISFIABLE
  43. c sat_status=1 initial_maximal_clause_length=9 initial_number_of_variables=729 initial_number_of_clauses=10554 initial_number_of_literal_occurrences=23352 running_time(s)=0.0 number_of_nodes=1
  44. number_of_single_nodes=0 number_of_quasi_single_nodes=0 number_of_2-reductions=1 number_of_pure_literals=0 number_of_autarkies=0 number_of_missed_single_nodes=0 max_tree_depth=0
  45. number_of_table_enlargements=0 reduced_maximal_clause_length=1 reduced_number_of_variables=577 reduced_number_of_clauses=9699 reduced_number_of_literal_occurrences=21410
  46. number_of_1-autarkies=0 number_of_initial_unit-eliminations=577 number_of_new_2-clauses=0 maximal_number_of_added_2-clauses=0 initial_number_of_2-clauses=720 file_name=SP100.cnf
  47. > OKsolver_2002-O3-DNDEBUG SP120.cnf
  48. s SATISFIABLE
  49. c sat_status=1 initial_maximal_clause_length=9 initial_number_of_variables=729 initial_number_of_clauses=10558 initial_number_of_literal_occurrences=23356 running_time(s)=0.0 number_of_nodes=1
  50. number_of_single_nodes=0 number_of_quasi_single_nodes=0 number_of_2-reductions=5 number_of_pure_literals=0 number_of_autarkies=0 number_of_missed_single_nodes=0 max_tree_depth=0
  51. number_of_table_enlargements=0 reduced_maximal_clause_length=2 reduced_number_of_variables=547 reduced_number_of_clauses=9432 reduced_number_of_literal_occurrences=20792
  52. number_of_1-autarkies=0 number_of_initial_unit-eliminations=547 number_of_new_2-clauses=0 maximal_number_of_added_2-clauses=0 initial_number_of_2-clauses=976 file_name=SP120.cnf
  53. \endverbatim
  54. */