Cryptator is a cryptarithm solver using [[https://en.wikipedia.org/wiki/Constraint_programming][Constraint Programming]].\ It is based on [[https://github.com/chocoteam/choco-solver][choco-solver]] which is an open-source Java library for Constraint Programming.
It is described in the [[file:pdf/jfpc2023.pdf][white paper]] (in French) published at the conference [[https://pfia23.icube.unistra.fr/conferences/jfpc/index.html][JFPC 2023]].
About cryptarithms [[https://en.wikipedia.org/wiki/Verbal_arithmetic][Cryptarithm]], or alphametic, is a type of mathematical game consisting of a mathematical equation among unknown numbers, whose digits are represented by letters of the alphabet.
Download and Installation
In the following, we distinguish two usages:
** Prerequisites This project works on 32 bits and 64 bits environment and requires:
** As a stand-alone application
This project uses the Cross-platform Maven build system. : mvn clean package or to skip unit tests : mvn clean package -DskipTests=true
The jar file contains all required dependencies. The next step is simply to run the console application. : java -cp target/cryptator-*-with-dependencies.jar cryptator.Cryptator send+more=money
There are three console applications and the links below point to demonstration scripts.
play the game with [[file:src/main/shell/demo-play.sh][Cryptamancer]].
Execute the main class without argument to display the help message. ** As a library
The jar file does not contains any dependencies, as of being used as a dependency of another application. The next step is to add the jar file to your classpath of your application and also add the required dependencies.
*** Inside a maven project
First, you must build from source and install it into your local .m2 repository.
: mvn install
Then, you only have to edit your pom.xml to declare the following library dependency:
** Integration tests The tests solve around 150 cryptarithms. By default, the tests are not executed by the regular maven lifecycle test execution. Indeed, their names are outside of the standard maven test runner nomenclature.
Just include it manually by feeding it as a parameter to the runner.
: mvn test -Dtest=ExtensiveTesting
Please read [[CONTRIBUTING.md][CONTRIBUTING.md]] for details on our how you can become a contributor and the process for submitting pull requests to us.
This project makes use of [[http://semver.org/][SemVer]] for versioning. A list of existing versions can be found in the [[https://github.com/arnaud-m/cryptator/releases][project's releases]].
See [[AUTHORS][AUTHORS]] and [[CONTRIBUTORS][CONTRIBUTORS]] files.
This project is licensed under the [[https://opensource.org/licenses/BSD-3-Clause/][3-Clause BSD License]] - see the [[LICENSE][LICENSE]] file for details.