{"id":41021680,"url":"https://github.com/tsionyx/pynogram","last_synced_at":"2026-01-22T09:34:33.995Z","repository":{"id":62582117,"uuid":"116978075","full_name":"tsionyx/pynogram","owner":"tsionyx","description":"Solve nonograms and visualize the process","archived":false,"fork":false,"pushed_at":"2019-01-27T03:01:46.000Z","size":2328,"stargazers_count":27,"open_issues_count":1,"forks_count":5,"subscribers_count":0,"default_branch":"master","last_synced_at":"2024-07-02T03:52:13.989Z","etag":null,"topics":["nonogram","nonogram-solver","solver","visualization"],"latest_commit_sha":null,"homepage":null,"language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/tsionyx.png","metadata":{"files":{"readme":"README.rst","changelog":"CHANGELOG.md","contributing":"docs/contributing.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null}},"created_at":"2018-01-10T15:52:18.000Z","updated_at":"2024-03-14T14:26:31.000Z","dependencies_parsed_at":"2022-11-03T20:17:00.689Z","dependency_job_id":null,"html_url":"https://github.com/tsionyx/pynogram","commit_stats":null,"previous_names":[],"tags_count":9,"template":false,"template_full_name":null,"purl":"pkg:github/tsionyx/pynogram","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsionyx%2Fpynogram","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsionyx%2Fpynogram/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsionyx%2Fpynogram/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsionyx%2Fpynogram/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/tsionyx","download_url":"https://codeload.github.com/tsionyx/pynogram/tar.gz/refs/heads/master","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/tsionyx%2Fpynogram/sbom","scorecard":{"id":900831,"data":{"date":"2025-08-11","repo":{"name":"github.com/tsionyx/pynogram","commit":"25434a1cd40ca443325319bbdac2d6690e72fa7f"},"scorecard":{"version":"v5.2.1-40-gf6ed084d","commit":"f6ed084d17c9236477efd66e5b258b9d4cc7b389"},"score":3.5,"checks":[{"name":"Packaging","score":-1,"reason":"packaging workflow not detected","details":["Warn: no GitHub/GitLab publishing workflow detected."],"documentation":{"short":"Determines if the project is published as a package that others can easily download, install, easily update, and uninstall.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#packaging"}},{"name":"Token-Permissions","score":-1,"reason":"No tokens found","details":null,"documentation":{"short":"Determines if the project's workflows follow the principle of least privilege.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#token-permissions"}},{"name":"Maintained","score":0,"reason":"0 commit(s) and 0 issue activity found in the last 90 days -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project is \"actively maintained\".","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#maintained"}},{"name":"Dangerous-Workflow","score":-1,"reason":"no workflows found","details":null,"documentation":{"short":"Determines if the project's GitHub Action workflows avoid dangerous patterns.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#dangerous-workflow"}},{"name":"Code-Review","score":0,"reason":"Found 0/30 approved changesets -- score normalized to 0","details":null,"documentation":{"short":"Determines if the project requires human code review before pull requests (aka merge requests) are merged.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#code-review"}},{"name":"SAST","score":0,"reason":"no SAST tool detected","details":["Warn: no pull requests merged into dev branch"],"documentation":{"short":"Determines if the project uses static code analysis.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#sast"}},{"name":"Binary-Artifacts","score":10,"reason":"no binaries found in the repo","details":null,"documentation":{"short":"Determines if the project has generated executable (binary) artifacts in the source repository.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#binary-artifacts"}},{"name":"CII-Best-Practices","score":0,"reason":"no effort to earn an OpenSSF best practices badge detected","details":null,"documentation":{"short":"Determines if the project has an OpenSSF (formerly CII) Best Practices Badge.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#cii-best-practices"}},{"name":"Pinned-Dependencies","score":-1,"reason":"no dependencies found","details":null,"documentation":{"short":"Determines if the project has declared and pinned the dependencies of its build process.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#pinned-dependencies"}},{"name":"Security-Policy","score":0,"reason":"security policy file not detected","details":["Warn: no security policy file detected","Warn: no security file to analyze","Warn: no security file to analyze","Warn: no security file to analyze"],"documentation":{"short":"Determines if the project has published a security policy.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#security-policy"}},{"name":"Fuzzing","score":0,"reason":"project is not fuzzed","details":["Warn: no fuzzer integrations found"],"documentation":{"short":"Determines if the project uses fuzzing.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#fuzzing"}},{"name":"License","score":10,"reason":"license file detected","details":["Info: project has a license file: LICENSE:0","Info: FSF or OSI recognized license: Apache License 2.0: LICENSE:0"],"documentation":{"short":"Determines if the project has defined a license.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#license"}},{"name":"Vulnerabilities","score":10,"reason":"0 existing vulnerabilities detected","details":null,"documentation":{"short":"Determines if the project has open, known unfixed vulnerabilities.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#vulnerabilities"}},{"name":"Signed-Releases","score":-1,"reason":"no releases found","details":null,"documentation":{"short":"Determines if the project cryptographically signs release artifacts.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#signed-releases"}},{"name":"Branch-Protection","score":-1,"reason":"internal error: error during branchesHandler.setup: internal error: githubv4.Query: Resource not accessible by integration","details":null,"documentation":{"short":"Determines if the default and release branches are protected with GitHub's branch protection settings.","url":"https://github.com/ossf/scorecard/blob/f6ed084d17c9236477efd66e5b258b9d4cc7b389/docs/checks.md#branch-protection"}}]},"last_synced_at":"2025-08-24T15:30:35.641Z","repository_id":62582117,"created_at":"2025-08-24T15:30:35.641Z","updated_at":"2025-08-24T15:30:35.641Z"},"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28660770,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-22T01:17:37.254Z","status":"online","status_checked_at":"2026-01-22T02:00:07.137Z","response_time":144,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["nonogram","nonogram-solver","solver","visualization"],"created_at":"2026-01-22T09:34:33.919Z","updated_at":"2026-01-22T09:34:33.985Z","avatar_url":"https://github.com/tsionyx.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"|Build Status| |Coverage Status| |codebeat badge|\n\nNonogram solver\n===============\n\nSolve the `nonogram puzzles \u003chttps://en.wikipedia.org/wiki/Nonogram\u003e`_\nand watch the solution process.\nBoth black-and-white and color puzzles with the unlimited\n(at least in theory) size are supported. Also, you can easily solve puzzles\nfrom http://webpbn.com or http://www.nonograms.org/ that have thousands of them.\n\n\nDifferent sources are supported:\n\n- local puzzles, embedded inside the package\n- local puzzles, created by yourself\n- puzzles from http://webpbn.com (without downloading)\n- locally saved webpbn puzzles (mainly for development/debug purpose)\n- http://www.nonograms.org/ (http://www.nonograms.ru/) puzzles\n\n\nInstall\n-------\n\n.. code-block::\n\n    pip install pynogram\n\n\nConsole\n-------\n\nFirstly, make sure it works (if not, see the `Errors`_ section):\n\n.. code-block::\n\n    $ pynogram\n    # # # # # # # # #               1 1\n    # # # # # # # # #               1 1               1   1     5\n    # # # # # # # # # 7 1 1 1 7 0 3 1 1 2 0 6 0 6 0 3 1 5 1 3 0 1\n                1 1 1 # . . . # . . . . . . . . . . . . . . . . #\n            1 1 1 1 1 # . . . # . . . . . . # . # . . . . . . . #\n        1 1 2 1 1 3 1 # . . . # . . # # . . # . # . . # # # . . #\n    5 1 1 1 1 1 1 1 1 # # # # # . # . . # . # . # . # . # . # . #\n    1 1 4 1 1 1 1 1 1 # . . . # . # # # # . # . # . # . # . # . #\n      1 1 1 1 1 1 1 1 # . . . # . # . . . . # . # . # . # . # . .\n        1 1 2 1 1 3 1 # . . . # . . # # . . # . # . . # # # . . #\n\n\n`Local \u003cpynogram/examples/\u003e`_\n~~~~~~~~~~~~~~~~~~~~~~~~~~~~~\n\nTo solve one of the embedded puzzles do the ``pynogram --board {NAME}`` (or simply *-b*)\nwhere NAME is the name of the file (you can skip the *.txt* extension).\nSee the list of all embedded puzzles in the *pynogram/examples/* of your installation folder [1]_.\n\n.. code-block::\n\n    $ pynogram --board=winter --draw-final\n    # # # # #                         2\n    # # # # #         1 1     4 1     2 4   4 5   2   7\n    # # # # # 5 7 2 1 3 3 7   4 6 7 6 3 4 4 4 3 6 2 5 1 125 1\n    # # # # # 6 3 7 6 6 6 4 111 1 4 5 1 1 7 1 1 5 4 1 1 1 6 103\n    # # # # # 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\n      1 5 114 # . # # # # # . # # # # # # # # # # # . . # # # #\n    3 3 9 2 1 # # # . . . # # # . # # # # # # # # # . . # # . #\n      2 8 5 5 # # . . # # # # # # # # . # # # # # . . # # # # #\n        2 145 # # . . # # # # # # # # # # # # # # . # # # # # .\n    2 4 4 2 6 # # . . # # # # . # # # # . . . # # . # # # # # #\n      2 6 5 2 . # # . . . # # # # # # . . . . . # # # # # . # #\n          117 # # # # # # # # # # # . . . . . . . # # # # # # #\n      6 3 3 6 # # # # # # . # # # . . . # # # . . . # # # # # #\n      1 7 5 5 # . # # # # # # # . . . # # # # # . . . # # # # #\n        8 7 4 # # # # # # # # . . . # # # # # # # . . . # # # #\n        8 9 4 # # # # # # # # . . # # # # # # # # # . . # # # #\n        121 8 # # # # # # # # # # # # . . # . . # # # # # # # #\n        2 1 2 . . . . . . . . . . # # . . # . . # # . . . . . .\n          9 3 . . . . . . . . . . # # # # # # # # # . # # # . .\n            2 . . . . . . . . . . . . . . . . . . . . . . # # .\n            9 . . . . . . . . . . . . . . # # # # # # # # # . .\n            6 . . . . . . . . . . # # # # # # . . . . . . . . .\n            6 . . . . . . . # # # # # # . . . . . . . . . . . .\n            6 . . . . . # # # # # # . . . . . . . . . . . . . .\n            7 . . . # # # # # # # . . . . . . . . . . . . . . .\n            8 . # # # # # # # # . . . . . . . . . . . . . . . .\n            8 # # # # # # # # . . . . . . . . . . . . . . . . .\n            8 # # # # # # # # . . . . . . . . . . . . . . . . .\n            7 # # # # # # # . . . . . . . . . . . . . . . . . .\n            7 # # # # # # # . . . . . . . . . . . . . . . . . .\n\nsolve simple color puzzle (UK flag)\n\n.. code-block::\n\n    $ pynogram -b uk\n    # # # # # # #       1 1 2 2 3 3 4                       4 3 3 2 2 1 1\n    # # # # # # #       1 2 1 2 1 2 1                       1 2 1 2 1 2 1\n    # # # # # # # 1 1 2 4 3 3 2 2 1 1                       1 1 2 2 3 3 4 2 1 1\n    # # # # # # # 5 5 4 3 3 3 3 3 3 3                       3 3 3 3 3 3 3 4 5 5\n    # # # # # # # 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\n    # # # # # # # 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\n    # # # # # # # 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\n        3 113 113 % % % * * * * * * * * * * * % % % * * * * * * * * * * * % % %\n    2 3 9 3 9 3 2 * * % % % * * * * * * * * * % % % * * * * * * * * * % % % * *\n    4 3 7 3 7 3 4 * * * * % % % * * * * * * * % % % * * * * * * * % % % * * * *\n    6 3 5 3 5 3 6 * * * * * * % % % * * * * * % % % * * * * * % % % * * * * * *\n    8 3 3 3 3 3 8 * * * * * * * * % % % * * * % % % * * * % % % * * * * * * * *\n    103 1 3 1 3 10* * * * * * * * * * % % % * % % % * % % % * * * * * * * * * *\n                31% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %\n                31% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %\n                31% % % % % % % % % % % % % % % % % % % % % % % % % % % % % % %\n    103 1 3 1 3 10* * * * * * * * * * % % % * % % % * % % % * * * * * * * * * *\n    8 3 3 3 3 3 8 * * * * * * * * % % % * * * % % % * * * % % % * * * * * * * *\n    6 3 5 3 5 3 6 * * * * * * % % % * * * * * % % % * * * * * % % % * * * * * *\n    4 3 7 3 7 3 4 * * * * % % % * * * * * * * % % % * * * * * * * % % % * * * *\n    2 3 9 3 9 3 2 * * % % % * * * * * * * * * % % % * * * * * * * * * % % % * *\n        3 113 113 % % % * * * * * * * * * * * % % % * * * * * * * * * * * % % %\n\nUser-defined\n~~~~~~~~~~~~\n\nTo create the puzzle by yourself, learn the format first. Do not panic, it is very simple!\nFind out the *pynogram/examples/hello.txt* file inside your installation folder [1]_\nand copy it to create a new puzzle.\nThen follow the comments in the file to add clues to your new puzzle.\nTo run the solver on your puzzle hit the ``pynogram`` and specify the path to your file:\n\n.. code-block::\n\n    $ cp /install/folder/pynogram/examples/hello.txt my-new-puzzle.txt\n    $ pynogram -b my-new-puzzle.txt\n    # # # # # # # # #               1 1\n    # # # # # # # # #               1 1               1   1     5\n    # # # # # # # # # 7 1 1 1 7 0 3 1 1 2 0 6 0 6 0 3 1 5 1 3 0 1\n                1 1 1 # . . . # . . . . . . . . . . . . . . . . #\n            1 1 1 1 1 # . . . # . . . . . . # . # . . . . . . . #\n        1 1 2 1 1 3 1 # . . . # . . # # . . # . # . . # # # . . #\n    5 1 1 1 1 1 1 1 1 # # # # # . # . . # . # . # . # . # . # . #\n    1 1 4 1 1 1 1 1 1 # . . . # . # # # # . # . # . # . # . # . #\n      1 1 1 1 1 1 1 1 # . . . # . # . . . . # . # . # . # . # . .\n        1 1 2 1 1 3 1 # . . . # . . # # . . # . # . . # # # . . #\n\nWebpbn\n~~~~~~\n\nVisit the http://webpbn.com/ to see thousands of puzzles waiting for you to solve.\nTo run the solver on any of them just specify the puzzle id with the *--pbn* flag:\n\n`Simple black-and-white puzzle \u003chttp://webpbn.com/3\u003e`__\n\n.. code-block::\n\n    $ pynogram --pbn=3 --draw-final\n    # # # #           3 3\n    # # # #         2 1 2 4 3 3 2\n    # # # #       3 1 2 1 3 5 1 1 3\n    # # # #       5 5 1 1 1 1 5 5 5\n    # # # # 5 9 113 2 3 3 3 3 3 2 3 119 5\n          5 . . . . . # # # # # . . . . .\n          9 . . . # # # # # # # # # . . .\n          11. . # # # # # # # # # # # . .\n      3 1 3 . # # # . . . # . . . # # # .\n    2 3 3 2 . # # . # # # . # # # . # # .\n    4 1 1 4 # # # # . . # . # . . # # # #\n        6 8 # # # # # # . # # # # # # # #\n        6 8 # # # # # # . # # # # # # # #\n        5 9 # # # # # . # # # # # # # # #\n        5 6 # # # # # . . . . # # # # # #\n      2 7 2 . # # . # # # # # # # . # # .\n        3 3 . # # # . . . . . . . # # # .\n          11. . # # # # # # # # # # # . .\n          9 . . . # # # # # # # # # . . .\n          5 . . . . . # # # # # . . . . .\n\n`Simple color puzzle \u003chttp://webpbn.com/898\u003e`__\n\n.. code-block::\n\n    $ pynogram --pbn=898 --draw-final\n    # # # # # # # #                   1\n    # # # # # # # #             1     1\n    # # # # # # # #     2   5   1     1     1\n    # # # # # # # #     1 4 1 6 2     1 5 4 1\n    # # # # # # # # 2   3 1 2 1 1     2 1 1 3\n    # # # # # # # # 1   1 3 1 2 1 6 6 3 2 3 1\n    # # # # # # # # 2 7 1 1 2 2 9 8 7 2 2 1 2 7 5\n                  11. . % % % % % % % % % % % . .\n      5 1 2 1 2 1 1 . % % % % % * % % * % % * % .\n              2 1 12% % * % % % % % % % % % % % %\n              9 1 5 % % % % % % % % % * % % % % %\n    1 2 1 2 1 4 1 3 * % % X % % * % % % % X % % %\n      4 1 5 1 1 1 2 % % % % X % % % % % X % * % %\n        2 1 2 2 1 5 % % * % % X X . . X % % % % %\n            4 2 1 4 . % % % % . X X . X % % % % .\n                  6 . . . . X X X X X X . . . . .\n                  4 . . . . . X X X X . . . . . .\n                  3 . . . . . . X X X . . . . . .\n                  3 . . . . . . X X X . . . . . .\n                  3 . . . . . . X X X . . . . . .\n                  7 . . . . X X X X X X X . . . .\n                  9 . . . X X X X X X X X X . . .\n\n\nIf you want to come over the network overhead when solving the webpbn puzzle,\nyou can download it prior to solving (e.g. http://webpbn.com/survey/puzzles).\nThen run the solver ``pynogram --local-pbn=path/to/pbn/puzzle.xml``.\n\n\nnonograms.org\n~~~~~~~~~~~~~\n\nThe http://www.nonograms.org also contains thousands of great puzzles.\nThis site offers only single-solution puzzles that do not require guessing,\ntherefore they usually solved quite fast.\n\n\n`Simple black-and-white puzzle \u003chttp://www.nonograms.org/nonograms/i/19833\u003e`__\n\n.. code-block::\n\n    $ pynogram --nonograms-org=19833\n    # # # # # #                       2\n    # # # # # #   1               3   2 2\n    # # # # # #   3   10    6 1 6 2 2 2 5 3\n    # # # # # # 9 1 101 1 103 3 2 2 3 1 1 2 4\n    # # # # # # 4 2 1 1 5 1 2 2 1 3 1 1 2 2 5\n          1 1 8 . # . . # . . # # # # # # # #\n        1 2 2 7 # . # # . # # . # # # # # # #\n      1 2 2 2 2 # . # # . # # . # # . . . # #\n      1 2 2 1 1 # . # # . # # . # . . . . . #\n      1 2 2 1 2 # . # # . # # . # . . # # . .\n      1 2 2 2 3 # . # # . # # . # # . # # # .\n      1 2 2 2 2 # . # # . # # . . # # . # # .\n          6 1 3 # # # # # # . # . . # # # . .\n              13# # # # # # # # # # # # # . .\n              10# # # # # # # # # # . . . . .\n            5 1 . . # # # # # . . . . . . . #\n          2 1 3 # # . . # . . . . . . . # # #\n    1 1 1 1 3 2 # . . # . # . # . # # # . # #\n      3 2 1 1 1 # # # . . . # # . # . . # . #\n    2 1 1 2 2 1 # # . # . . # . # # . # # . #\n\n\n\n`Simple color puzzle \u003chttp://www.nonograms.org/nonograms2/i/19784\u003e`__\n\n.. code-block::\n\n    $ pynogram --nonograms-org=19784\n    # # # # # # #                     2\n    # # # # # # #                 2 2 1\n    # # # # # # #                 1 4 1\n    # # # # # # #               2 1 6 2 3\n    # # # # # # #               2 2 1 6 3 4\n    # # # # # # #         1 2 2 2 6 2 1 7 6\n    # # # # # # #     1   1 1 5 5 2 1 5 5 2 3\n    # # # # # # # 1 1 4 111 1 1 1 1 1 1 1 1 4 4 1 1\n                4                 \" \" \" \"\n                6               \" \" \" \" \" \"\n            1 3 2               \" ! ! ! \" \"\n      1 1 1 1 1 1               ! X ! X ! \"\n              5 1               ! ! ! ! ! \"\n                4                 ! ! ! !\n                3                   # # #\n                5                 # # # # #\n            1 2 9     ! \" \" # # # # # # # # #\n            1 1 9       \" ! # # # # # # # # #\n              1 6       \"         # # # # # #\n              1 5       \"         # # # # #\n          1 1 2 2       \"         # ! ! # #\n              1 7       \"     $ $ $ $ $ $ $\n              1 7       \"     $ $ $ $ $ $ $\n    3 1 2 2 2 2 5 X X X \" X X $ $ X X $ $ X X X X X\n        1 1 2 2 2     X \"     $ $     $ $   X X\n        1 1 2 2 2     X \"     $ $     $ $   X X\n        1 1 3 3 2     X \"   X X X   X X X   X X\n\n\nModes\n~~~~~\n\nBy default, in the process of solving the new information will instantly appear on a terminal\n(as a full image board), so you can observe many boards that changing each other many times a second\nmixed with logs (if you specify any verbosity level with *-v* flag). But you can always disable\nthe board updates and force to show only the final result with *--draw-final* flag.\n\nAlso the *--curses* mode is available, that allows you to see the solving\ninside a separate console (`ncurses \u003chttps://en.wikipedia.org/wiki/Ncurses\u003e`_) window.\n\nExamples:\n\n$ pynogram --pbn `30216 \u003chttp://webpbn.com/30216\u003e`_ --curses\n\n.. image:: docs/images/curses-moose.gif\n\n$ pynogram --pbn `29723 \u003chttp://webpbn.com/29723\u003e`_ --curses\n\n.. image:: docs/images/curses-mosaic.gif\n\nErrors\n~~~~~~\n\nIf you see something like this (I stumbled with this while trying to run inside a docker container)\n\n.. code-block::\n\n    $ pynogram\n    ...\n    UnicodeEncodeError: 'ascii' codec can't encode character u'\\u2b1b' in position 18: ordinal not in range(128)\n\nthen try to run with the special environment variable\n\n.. code-block::\n\n    $ PYTHONIOENCODING=utf-8 pynogram\n\nIf that will work, you can save that variable for current session:\n\n.. code-block::\n\n    $ export PYTHONIOENCODING=utf-8\n\nor for all the future runs\n\n.. code-block::\n\n    $ echo 'export PYTHONIOENCODING=utf-8' \u003e\u003e ~/.bashrc\n\n\nWeb-solver\n----------\n\n- **to use the web solver you have to install additional subpackage:**\n\n  ``pip install pynogram[web]`` and **start the server**: ``pynogram-web``\n\n- you can solve any of local puzzles (with */board/local/* path)\n  or webpbn puzzles (with */board/pbn/* path)\n  or nonograms.org ones (with */board/nonograms.org/* path)\n\n- you can specify render mode (with the *?render=MODE* argument).\n  Now the four are supported:\n\n  - **svg** (default) - draw nice vector image. It can seriously\n    slows down the viewing and solving on a large boards (e.g. 50x50 and more),\n    since the resulted SVG can be pretty huge.\n    In the future releases I plan to apply more advanced SVG drawing to eliminate the problem.\n\n  - **text** - lightweight text format similar to the one that draws on the console.\n\n  - **text-grid** - slightly more advanced ASCII-graphic that renders\n    the grid between cells. However it requires more screen space.\n\n  - **text-grid-bold** - almost like the last one, but also draws bold lines,\n    splitting the whole board into 5x5 squares (remember puzzles in those magazines?)\n\n\nhttp://localhost:3145/board/local/einstein?render=svg (zoom=67%)\n\n.. image:: docs/images/einstein-local-svg.gif\n\nhttp://localhost:3145/board/local/MLP?render=text-grid-bold (zoom=25%)\n\n.. image:: docs/images/MLP-local-text-grid.gif\n\nhttp://localhost:3145/board/pbn/2040?render=text (zoom=75%)\n\n.. image:: docs/images/marilyn-pbn-text.gif\n\nhttp://localhost:3145/board/pbn/2196 (zoom=75%)\n\n.. image:: docs/images/precious-pbn-svg.gif\n\n\nNotes\n-----\n\nBoth console and web solvers work on a wide variety of pythons:\nCPython2.7 and 3.5+, PyPy 2.7 and 3.5.\nThe best performance, however, achieved on PyPy (version 3 is always preferable), so try it out.\n\n\nYou can install *numpy* for slightly better performance\nwhen running on CPython interpreter\n(it's not listed in requirements to keep the package lightweight).\nHowever numpy does not work correctly with PyPy interpreter.\n\n\n\nReferences\n----------\n\nThe following sites and articles were used when making this solver:\n\n1. `The 'pbnsolve' Paint-by-Number Puzzle Solver by Jan Wolter\n\u003chttp://webpbn.com/pbnsolve.html\u003e`_\nand the `survey \u003chttp://webpbn.com/survey/\u003e`_\n\n2. `The BGU Nonograms Project\n\u003chttps://www.cs.bgu.ac.il/~benr/nonograms/\u003e`_\n\n3. `Solving Nonograms by combining relaxations\n\u003chttp://citeseerx.ist.psu.edu/viewdoc/download?doi=10.1.1.177.76\u0026rep=rep1\u0026type=pdf\u003e`_\n\n4. `An Efficient Approach to Solving Nonograms\n\u003chttps://ir.nctu.edu.tw/bitstream/11536/22772/1/000324586300005.pdf\u003e`_\n\n5. `Решение цветных японских кроссвордов со скоростью света\n\u003chttps://habr.com/post/418069/\u003e`_\n\n6. `Решение японских кроссвордов с использованием конечных автоматов\n\u003chttp://window.edu.ru/resource/781/57781\u003e`_\n\n7. `'Nonolib' library by Dr. Steven Simpson\n\u003chttp://www.lancaster.ac.uk/~simpsons/nonogram/howitworks\u003e`_\n\n-----\n\nThe software developed and tested on Ubuntu 16.04 LTS using PyPy 3.5 (mostly).\nIf you have any issues, drop a line to the\n`project site \u003chttps://github.com/tsionyx/pynogram/issues\u003e`_.\n\n\n.. [1] The installation folder can vary depending on your distro, python version\n and installation method. For example when installed inside virtualenv it can be\n in one of such paths:\n\n  - .env/lib/python3.5/site-packages/\n  - ~/.virtualenvs/pypy3/site-packages/\n  - ~/.virtualenvs/pynogram/lib/python2.7/site-packages/\n\n When installing system-wide it can be in:\n\n  - /usr/lib/pypy/lib-python/2.7/\n  - /usr/local/lib/python2.7/dist-packages/\n\n If you still cannot find it, try the ``which pynogram``, it gives you some clue\n about where the installation folder can be.\n Also if you actually searching for the *examples/* folder,\n try ``pynogram --show-examples-folder``.\n\n.. |Build Status| image:: https://img.shields.io/travis/tsionyx/pynogram.svg\n    :target: https://travis-ci.org/tsionyx/pynogram\n.. |Coverage Status| image:: https://img.shields.io/coveralls/github/tsionyx/pynogram.svg\n    :target: https://coveralls.io/github/tsionyx/pynogram\n.. |codebeat badge| image:: https://codebeat.co/badges/21e69843-0e13-4046-bc88-b3f108ccff69\n    :target: https://codebeat.co/projects/github-com-tsionyx-pynogram-dev\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsionyx%2Fpynogram","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Ftsionyx%2Fpynogram","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Ftsionyx%2Fpynogram/lists"}