Package: pynogram
Nonogram solverSolve thenonogram puzzlesand watch the solution process.
Both black-and-white and color puzzles with the unlimited
(at least in theory) size are supported. Also, you can easily solve puzzles
fromhttp://webpbn.comorhttp://www.nonograms.org/that have thousands of them.Different sources are supported:local puzzles, embedded inside the packagelocal puzzles, created by yourselfpuzzles fromhttp://webpbn.com(without downloading)locally saved webpbn puzzles (mainly for development/debug purpose)http://www.nonograms.org/(http://www.nonograms.ru/) puzzlesInstallpip install pynogramConsoleFirstly, make sure it works (if not, see theErrorssection):$ pynogram
# # # # # # # # #               1 1
# # # # # # # # #               1 1               1   1     5
# # # # # # # # # 7 1 1 1 7 0 3 1 1 2 0 6 0 6 0 3 1 5 1 3 0 1
            1 1 1 # . . . # . . . . . . . . . . . . . . . . #
        1 1 1 1 1 # . . . # . . . . . . # . # . . . . . . . #
    1 1 2 1 1 3 1 # . . . # . . # # . . # . # . . # # # . . #
5 1 1 1 1 1 1 1 1 # # # # # . # . . # . # . # . # . # . # . #
1 1 4 1 1 1 1 1 1 # . . . # . # # # # . # . # . # . # . # . #
  1 1 1 1 1 1 1 1 # . . . # . # . . . . # . # . # . # . # . .
    1 1 2 1 1 3 1 # . . . # . . # # . . # . # . . # # # . . #LocalTo solve one of the embedded puzzles do thepynogram--board{NAME}(or simply-b)
where NAME is the name of the file (you can skip the.txtextension).
See the list of all embedded puzzles in thepynogram/examples/of your installation folder[1].$ pynogram --board=winter --draw-final
# # # # #                         2
# # # # #         1 1     4 1     2 4   4 5   2   7
# # # # # 5 7 2 1 3 3 7   4 6 7 6 3 4 4 4 3 6 2 5 1 125 1
# # # # # 6 3 7 6 6 6 4 111 1 4 5 1 1 7 1 1 5 4 1 1 1 6 103
# # # # # 4 5 5 6 6 7 7 6 4 3 3 2 2 1 2 2 1 1 1 1 1 1 3 1 8
  1 5 114 # . # # # # # . # # # # # # # # # # # . . # # # #
3 3 9 2 1 # # # . . . # # # . # # # # # # # # # . . # # . #
  2 8 5 5 # # . . # # # # # # # # . # # # # # . . # # # # #
    2 145 # # . . # # # # # # # # # # # # # # . # # # # # .
2 4 4 2 6 # # . . # # # # . # # # # . . . # # . # # # # # #
  2 6 5 2 . # # . . . # # # # # # . . . . . # # # # # . # #
      117 # # # # # # # # # # # . . . . . . . # # # # # # #
  6 3 3 6 # # # # # # . # # # . . . # # # . . . # # # # # #
  1 7 5 5 # . # # # # # # # . . . # # # # # . . . # # # # #
    8 7 4 # # # # # # # # . . . # # # # # # # . . . # # # #
    8 9 4 # # # # # # # # . . # # # # # # # # # . . # # # #
    121 8 # # # # # # # # # # # # . . # . . # # # # # # # #
    2 1 2 . . . . . . . . . . # # . . # . . # # . . . . . .
      9 3 . . . . . . . . . . # # # # # # # # # . # # # . .
        2 . . . . . . . . . . . . . . . . . . . . . . # # .
        9 . . . . . . . . . . . . . . # # # # # # # # # . .
        6 . . . . . . . . . . # # # # # # . . . . . . . . .
        6 . . . . . . . # # # # # # . . . . . . . . . . . .
        6 . . . . . # # # # # # . . . . . . . . . . . . . .
        7 . . . # # # # # # # . . . . . . . . . . . . . . .
        8 . # # # # # # # # . . . . . . . . . . . . . . . .
        8 # # # # # # # # . . . . . . . . . . . . . . . . .
        8 # # # # # # # # . . . . . . . . . . . . . . . . .
        7 # # # # # # # . . . . . . . . . . . . . . . . . .
        7 # # # # # # # . . . . . . . . . . . . . . . . . .solve simple color puzzle (UK flag)$ pynogram -b uk
# # # # # # #       1 1 2 2 3 3 4                       4 3 3 2 2 1 1
# # # # # # #       1 2 1 2 1 2 1                       1 2 1 2 1 2 1
# # # # # # # 1 1 2 4 3 3 2 2 1 1                       1 1 2 2 3 3 4 2 1 1
# # # # # # # 5 5 4 3 3 3 3 3 3 3                       3 3 3 3 3 3 3 4 5 5
# # # # # # # 3 3 3 4 3 3 2 2 1 1 4 5 5 6       6 5 5 4 1 1 2 2 3 3 4 3 3 3
# # # # # # # 5 5 4 1 2 1 2 1 2 1 7 5 5 3       3 5 5 7 1 2 1 2 1 2 1 4 5 5
# # # # # # # 1 1 2 1 1 2 2 3 3 4 4 5 5 6 1515156 5 5 4 4 3 3 2 2 1 1 2 1 1
    3 113 113 % % % * * * * * * * * * * * % % % * * * * * * * * * * * % % %
2 3 9 3 9 3 2 * * % % % * * * * * * * * * % % % * * * * * * * * * % % % * *
4 3 7 3 7 3 4 * * * * % % % * * * * * * * % % % * * * * * * * % % % * * * *
6 3 5 3 5 3 6 * * * * * * % % % * * * * * % % % * * * * * % % % * * * * * *
8 3 3 3 3 3 8 * * * * * * * * % % % * * * % % % * * * % % % * * * * * * * *
103 1 3 1 3 10* * * * * * * * * * % % % * % % % * % % % * * * * * * * * * *
            31% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
            31% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
            31% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %
103 1 3 1 3 10* * * * * * * * * * % % % * % % % * % % % * * * * * * * * * *
8 3 3 3 3 3 8 * * * * * * * * % % % * * * % % % * * * % % % * * * * * * * *
6 3 5 3 5 3 6 * * * * * * % % % * * * * * % % % * * * * * % % % * * * * * *
4 3 7 3 7 3 4 * * * * % % % * * * * * * * % % % * * * * * * * % % % * * * *
2 3 9 3 9 3 2 * * % % % * * * * * * * * * % % % * * * * * * * * * % % % * *
    3 113 113 % % % * * * * * * * * * * * % % % * * * * * * * * * * * % % %User-definedTo create the puzzle by yourself, learn the format first. Do not panic, it is very simple!
Find out thepynogram/examples/hello.txtfile inside your installation folder[1]and copy it to create a new puzzle.
Then follow the comments in the file to add clues to your new puzzle.
To run the solver on your puzzle hit thepynogramand specify the path to your file:$ cp /install/folder/pynogram/examples/hello.txt my-new-puzzle.txt
$ pynogram -b my-new-puzzle.txt
# # # # # # # # #               1 1
# # # # # # # # #               1 1               1   1     5
# # # # # # # # # 7 1 1 1 7 0 3 1 1 2 0 6 0 6 0 3 1 5 1 3 0 1
            1 1 1 # . . . # . . . . . . . . . . . . . . . . #
        1 1 1 1 1 # . . . # . . . . . . # . # . . . . . . . #
    1 1 2 1 1 3 1 # . . . # . . # # . . # . # . . # # # . . #
5 1 1 1 1 1 1 1 1 # # # # # . # . . # . # . # . # . # . # . #
1 1 4 1 1 1 1 1 1 # . . . # . # # # # . # . # . # . # . # . #
  1 1 1 1 1 1 1 1 # . . . # . # . . . . # . # . # . # . # . .
    1 1 2 1 1 3 1 # . . . # . . # # . . # . # . . # # # . . #WebpbnVisit thehttp://webpbn.com/to see thousands of puzzles waiting for you to solve.
To run the solver on any of them just specify the puzzle id with the–pbnflag:Simple black-and-white puzzle$ pynogram --pbn=3 --draw-final
# # # #           3 3
# # # #         2 1 2 4 3 3 2
# # # #       3 1 2 1 3 5 1 1 3
# # # #       5 5 1 1 1 1 5 5 5
# # # # 5 9 113 2 3 3 3 3 3 2 3 119 5
      5 . . . . . # # # # # . . . . .
      9 . . . # # # # # # # # # . . .
      11. . # # # # # # # # # # # . .
  3 1 3 . # # # . . . # . . . # # # .
2 3 3 2 . # # . # # # . # # # . # # .
4 1 1 4 # # # # . . # . # . . # # # #
    6 8 # # # # # # . # # # # # # # #
    6 8 # # # # # # . # # # # # # # #
    5 9 # # # # # . # # # # # # # # #
    5 6 # # # # # . . . . # # # # # #
  2 7 2 . # # . # # # # # # # . # # .
    3 3 . # # # . . . . . . . # # # .
      11. . # # # # # # # # # # # . .
      9 . . . # # # # # # # # # . . .
      5 . . . . . # # # # # . . . . .Simple color puzzle$ pynogram --pbn=898 --draw-final
# # # # # # # #                   1
# # # # # # # #             1     1
# # # # # # # #     2   5   1     1     1
# # # # # # # #     1 4 1 6 2     1 5 4 1
# # # # # # # # 2   3 1 2 1 1     2 1 1 3
# # # # # # # # 1   1 3 1 2 1 6 6 3 2 3 1
# # # # # # # # 2 7 1 1 2 2 9 8 7 2 2 1 2 7 5
              11. . % % % % % % % % % % % . .
  5 1 2 1 2 1 1 . % % % % % * % % * % % * % .
          2 1 12% % * % % % % % % % % % % % %
          9 1 5 % % % % % % % % % * % % % % %
1 2 1 2 1 4 1 3 * % % X % % * % % % % X % % %
  4 1 5 1 1 1 2 % % % % X % % % % % X % * % %
    2 1 2 2 1 5 % % * % % X X . . X % % % % %
        4 2 1 4 . % % % % . X X . X % % % % .
              6 . . . . X X X X X X . . . . .
              4 . . . . . X X X X . . . . . .
              3 . . . . . . X X X . . . . . .
              3 . . . . . . X X X . . . . . .
              3 . . . . . . X X X . . . . . .
              7 . . . . X X X X X X X . . . .
              9 . . . X X X X X X X X X . . .If you want to come over the network overhead when solving the webpbn puzzle,
you can download it prior to solving (e.g.http://webpbn.com/survey/puzzles).
Then run the solverpynogram--local-pbn=path/to/pbn/puzzle.xml.nonograms.orgThehttp://www.nonograms.orgalso contains thousands of great puzzles.
This site offers only single-solution puzzles that do not require guessing,
therefore they usually solved quite fast.Simple black-and-white puzzle$ pynogram --nonograms-org=19833
# # # # # #                       2
# # # # # #   1               3   2 2
# # # # # #   3   10    6 1 6 2 2 2 5 3
# # # # # # 9 1 101 1 103 3 2 2 3 1 1 2 4
# # # # # # 4 2 1 1 5 1 2 2 1 3 1 1 2 2 5
      1 1 8 . # . . # . . # # # # # # # #
    1 2 2 7 # . # # . # # . # # # # # # #
  1 2 2 2 2 # . # # . # # . # # . . . # #
  1 2 2 1 1 # . # # . # # . # . . . . . #
  1 2 2 1 2 # . # # . # # . # . . # # . .
  1 2 2 2 3 # . # # . # # . # # . # # # .
  1 2 2 2 2 # . # # . # # . . # # . # # .
      6 1 3 # # # # # # . # . . # # # . .
          13# # # # # # # # # # # # # . .
          10# # # # # # # # # # . . . . .
        5 1 . . # # # # # . . . . . . . #
      2 1 3 # # . . # . . . . . . . # # #
1 1 1 1 3 2 # . . # . # . # . # # # . # #
  3 2 1 1 1 # # # . . . # # . # . . # . #
2 1 1 2 2 1 # # . # . . # . # # . # # . #Simple color puzzle$ pynogram --nonograms-org=19784
# # # # # # #                     2
# # # # # # #                 2 2 1
# # # # # # #                 1 4 1
# # # # # # #               2 1 6 2 3
# # # # # # #               2 2 1 6 3 4
# # # # # # #         1 2 2 2 6 2 1 7 6
# # # # # # #     1   1 1 5 5 2 1 5 5 2 3
# # # # # # # 1 1 4 111 1 1 1 1 1 1 1 1 4 4 1 1
            4                 " " " "
            6               " " " " " "
        1 3 2               " ! ! ! " "
  1 1 1 1 1 1               ! X ! X ! "
          5 1               ! ! ! ! ! "
            4                 ! ! ! !
            3                   # # #
            5                 # # # # #
        1 2 9     ! " " # # # # # # # # #
        1 1 9       " ! # # # # # # # # #
          1 6       "         # # # # # #
          1 5       "         # # # # #
      1 1 2 2       "         # ! ! # #
          1 7       "     $ $ $ $ $ $ $
          1 7       "     $ $ $ $ $ $ $
3 1 2 2 2 2 5 X X X " X X $ $ X X $ $ X X X X X
    1 1 2 2 2     X "     $ $     $ $   X X
    1 1 2 2 2     X "     $ $     $ $   X X
    1 1 3 3 2     X "   X X X   X X X   X XModesBy default, in the process of solving the new information will instantly appear on a terminal
(as a full image board), so you can observe many boards that changing each other many times a second
mixed with logs (if you specify any verbosity level with-vflag). But you can always disable
the board updates and force to show only the final result with–draw-finalflag.Also the–cursesmode is available, that allows you to see the solving
inside a separate console (ncurses) window.Examples:$ pynogram –pbn30216–curses$ pynogram –pbn29723–cursesErrorsIf you see something like this (I stumbled with this while trying to run inside a docker container)$ pynogram
...
UnicodeEncodeError: 'ascii' codec can't encode character u'\u2b1b' in position 18: ordinal not in range(128)then try to run with the special environment variable$ PYTHONIOENCODING=utf-8 pynogramIf that will work, you can save that variable for current session:$ export PYTHONIOENCODING=utf-8or for all the future runs$ echo 'export PYTHONIOENCODING=utf-8' >> ~/.bashrcWeb-solverto use the web solver you have to install additional subpackage:pip install pynogram[web]andstart the server:pynogram-webyou can solve any of local puzzles (with/board/local/path)
or webpbn puzzles (with/board/pbn/path)
or nonograms.org ones (with/board/nonograms.org/path)you can specify render mode (with the?render=MODEargument).
Now the four are supported:svg(default) - draw nice vector image. It can seriously
slows down the viewing and solving on a large boards (e.g. 50x50 and more),
since the resulted SVG can be pretty huge.
In the future releases I plan to apply more advanced SVG drawing to eliminate the problem.text- lightweight text format similar to the one that draws on the console.text-grid- slightly more advanced ASCII-graphic that renders
the grid between cells. However it requires more screen space.text-grid-bold- almost like the last one, but also draws bold lines,
splitting the whole board into 5x5 squares (remember puzzles in those magazines?)http://localhost:3145/board/local/einstein?render=svg(zoom=67%)http://localhost:3145/board/local/MLP?render=text-grid-bold(zoom=25%)http://localhost:3145/board/pbn/2040?render=text(zoom=75%)http://localhost:3145/board/pbn/2196(zoom=75%)NotesBoth console and web solvers work on a wide variety of pythons:
CPython2.7 and 3.5+, PyPy 2.7 and 3.5.
The best performance, however, achieved on PyPy (version 3 is always preferable), so try it out.You can installnumpyfor slightly better performance
when running on CPython interpreter
(it’s not listed in requirements to keep the package lightweight).
However numpy does not work correctly with PyPy interpreter.ReferencesThe following sites and articles were used when making this solver:1.The ‘pbnsolve’ Paint-by-Number Puzzle Solver by Jan Wolterand thesurvey2.The BGU Nonograms Project3.Solving Nonograms by combining relaxations4.An Efficient Approach to Solving Nonograms5.Решение цветных японских кроссвордов со скоростью света6.Решение японских кроссвордов с использованием конечных автоматов7.‘Nonolib’ library by Dr. Steven SimpsonThe software developed and tested on Ubuntu 16.04 LTS using PyPy 3.5 (mostly).
If you have any issues, drop a line to theproject site.[1](1,2)The installation folder can vary depending on your distro, python version
and installation method. For example when installed inside virtualenv it can be
in one of such paths:.env/lib/python3.5/site-packages/~/.virtualenvs/pypy3/site-packages/~/.virtualenvs/pynogram/lib/python2.7/site-packages/When installing system-wide it can be in:/usr/lib/pypy/lib-python/2.7//usr/local/lib/python2.7/dist-packages/If you still cannot find it, try thewhich pynogram, it gives you some clue
about where the installation folder can be.
Also if you actually searching for theexamples/folder,
trypynogram--show-examples-folder.