nonogram-rs

Crates.iononogram-rs
lib.rsnonogram-rs
version2.2.3
sourcesrc
created_at2022-01-06 15:23:49.40237
updated_at2023-01-04 14:13:38.825491
descriptionA fast and lightweight nonogram solving library.
homepage
repositoryhttps://github.com/ricoriedel/nonogram-rs
max_upload_size
id509013
size189,963
Rico Riedel (ricoriedel)

documentation

README

nonogram-rs

A fast and lightweight nonogram solving library.

Features:

  • Solving regular puzzles
  • Solving colored puzzles (with arbitrary color type)
  • Finding all solutions to a puzzle
  • Multithreading using rayon
  • De/serializing using serde (requires serde feature)

Examples of how to use this library can be found in the tests/ directory.

Command-line interface

This library includes a CLI called nonogram-cli as a binary target.

cargo build --bin nonogram-cli --features='cli'
# Solve
cat layout.json | ./nonogram-cli solve > result.json

# Show
cat result.json | ./nonogram-cli show

# Both in one line
cat layout.json | ./nonogram-cli solve | ./nonogram-cli show

Example layout

{
  "cols": [
    [["y", 1], ["y", 1]],
    [["r", 3]],
    [["r", 1]]
  ],
  "rows": [
    [["y", 1], ["r", 1]],
    [["r", 1]],
    [["y", 1], ["r", 2]]
  ]
}

Example result

[
  [
    [{"Box":{"color":"y"}}, {"Box":{"color":"r"}}, "Space"],
    ["Space",               {"Box":{"color":"r"}}, "Space"],
    [{"Box":{"color":"y"}}, {"Box":{"color":"r"}}, {"Box":{"color":"r"}}]
  ]
]

Result

Colors

The following colors are supported by the CLI. Lowercase letters are dark and uppercase letters are bright colors. Note that the library supports arbitrary color types.

Key Color Key Color Key Color
! default R red r dark red
0 black G green g dark green
1 dark grey Y yellow y dark yellow
2 grey B blue b dark blue
3 white M magenta m dark magenta
C cyan c dark cyan

Algorithm

The algorithm is explained in detail in a separate document.

License

This software (including the complete source code) is licensed under the GPLv3.

Commit count: 130

cargo fmt