Skip to content

A constraint solver and a constraint programming Domain Specific Language (DSL) for the Scala programming language

Notifications You must be signed in to change notification settings

kjellwinblad/sconsolver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

28 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

SConSolver - Scala Constraint Solver

SConSolver is in an early development stage. It is not recommended for any practical use yet.

TODO Before version 0.1

Version 0.1 of SConSolver shall contain the following when it is released:

  • Search with possibility to specify search properties to search for the following:

    • Best solution DONE
    • All solutions DONE
    • First solution DONE
    • N solutions 50% DONE
  • Primitive propagators:

    • Equals (x == y) DONE
    • NotEquals (x != y) DONE
    • LessThanOrEqual (x <= y) DONE
    • LessThan (x <= y) DONE
    • IsEqual ((x == y) == z) DONE
    • IsNotEqual ((x != y) == z) DONE
    • IsLessThan ((x < y) == z) DONE
    • Add (x + y == z) DONE
    • Sub (x - y == z) DONE
    • Mult (x * y == z) DONE
    • Div (x / y == z) DONE
    • Modulo (x % y == z)
  • Logical propagators (Parameters are variables that can be 0 or 1):

    • Or (x or y == z) DONE
    • And (x and y == z) DONE
    • Not (!x == y) DONE
    • Xor (x xor y == z) DONE
  • Global propagators:

    • Distinct (Takes a list of variables. Guarantees that all variables in the list have unique values.) DONE
    • Sum (Takes a list of variables and a result variable. Guarantees that the sum of the variables in the list is equal to the result)
    • Linear (Takes a list of vars List(v1,v2,...,vn) of size n and a list of constants with double values List(c1,c2,...,cn) of size n. Guarantees that the following is true v1c1+v2c2+...+vn*cn==0)
  • A framework for extending the system with new propagators search methods etc 90% DONE

  • A Domain Specific Language for Constraint Programming 85% DONE

  • Examples:

    • A sudoku solver 70% DONE
    • Solver for the SEND + MORE + MONEY problem 70% DONE
  • Some documentation for the most basic classes

  • A short user guide that describes how to get started

About

A constraint solver and a constraint programming Domain Specific Language (DSL) for the Scala programming language

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages