Skip to content
/ sudoku Public

flexible sudoku engine for all kind of sudokus with solver, generator, UI

License

Notifications You must be signed in to change notification settings

m-m-m/sudoku

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

20 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

logo

Apache License, Version 2.0 Build Status

mmm-sudoku

Maven Central sudoku JavaDoc

The module io.github.mmm.sudoku (artifactId mmm-sudoku) provides a flexible model and engine for Sudoku puzzles. Instead of hard-coding specific types of Sudokus we designed the Sudoku to have any number of Partitionings. Each Partitioning can divide the Sudoku board entirely or partially into any number of partitions. Every Sudoku always has Column and Row as Partitioning. Most of them also have Box but a Jigsaw Sudoku (Squiggly Sudoku) has Regions that are typically non-rectangular. The latter even allows an irregular Dimension such as a 5x5 board. Even Killer Sudoku (SumDoku) is possible with this model.

The great thing about this design is that implementations like solvers or generators as well as the UI presenting the game can stay generic and need little to no knowledge of the different kind of Sudokus (except for SumDokus that add a whole new concept to the game).

Features

This library offers the following features:

  • Powerful but easy model for Sudoku and its variants

  • Support for all common kinds of Sudoku variants

  • Ability to add and implement your own variant in minutes

  • History with unlimited undo/redo

  • Support and auto-generation for candidates (pencil marks)

  • Automatic error detection

  • Generation of hints and solutions

  • Validation of the Sudoku

  • Eventing to observe changes and other aspects

Usage

Maven Dependency:

<dependency>
  <groupId>io.github.m-m-m</groupId>
  <artifactId>mmm-sudoku</artifactId>
  <version>${mmm.version}</version>
</dependency>

Module Dependency:

  requires transitive io.github.mmm.sudoku;

mmm-sudoku-fx

Maven Central SudokuFx JavaDoc

The module io.github.mmm.sudoku.fx (artifactId mmm-sudoku-fx) provides the JavaFx GUI for the sudoku game engine.

Features

This library offers the following features:

  • Configuration of the Sudoku puzzle (dimension, difficulty, type, etc.)

  • Presentation of the Sudoku-Board.

  • Set values and candidates (pencil marks)

  • Unlimited undo/redo

  • Show candidates, get hits, etc. *

Usage

Maven Dependency:

<dependency>
  <groupId>io.github.m-m-m</groupId>
  <artifactId>mmm-sudoku-fx</artifactId>
  <version>${mmm.version}</version>
</dependency>

Module Dependency:

  requires transitive io.github.mmm.sudoku.fx;

Research

Sudokus are an interesting topic both from mathematics as well as from computer-science. Implementing this project allowed me to apply my knowledge about maths, graph-theory, data-modelling, boolean algebra and bit-mapping, efficient algorithm design, and many other disciplines. The following links helped me to learn more about the topic and could be interesting also for others interested in this topic.

Other open-source Sudoku implementations:

Best Android Sudoku Apps:

About

flexible sudoku engine for all kind of sudokus with solver, generator, UI

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published