{"id":21121366,"url":"https://github.com/gregorias/rummikubsolver","last_synced_at":"2025-07-08T21:32:42.700Z","repository":{"id":34628172,"uuid":"38577937","full_name":"gregorias/rummikubsolver","owner":"gregorias","description":"A solver for the Rummikub board game","archived":false,"fork":false,"pushed_at":"2023-12-25T16:34:09.000Z","size":211,"stargazers_count":30,"open_issues_count":0,"forks_count":4,"subscribers_count":2,"default_branch":"main","last_synced_at":"2025-07-02T09:56:13.704Z","etag":null,"topics":["haskell","rummikub","rummikub-solver"],"latest_commit_sha":null,"homepage":"","language":"Haskell","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/gregorias.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null}},"created_at":"2015-07-05T17:41:07.000Z","updated_at":"2025-02-19T16:06:28.000Z","dependencies_parsed_at":"2023-12-23T14:38:58.994Z","dependency_job_id":"90539dcd-f1e2-4a3d-a709-c5ab9926370d","html_url":"https://github.com/gregorias/rummikubsolver","commit_stats":null,"previous_names":[],"tags_count":3,"template":false,"template_full_name":null,"purl":"pkg:github/gregorias/rummikubsolver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregorias%2Frummikubsolver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregorias%2Frummikubsolver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregorias%2Frummikubsolver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregorias%2Frummikubsolver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/gregorias","download_url":"https://codeload.github.com/gregorias/rummikubsolver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/gregorias%2Frummikubsolver/sbom","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":264352882,"owners_count":23594987,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","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":["haskell","rummikub","rummikub-solver"],"created_at":"2024-11-20T03:48:29.205Z","updated_at":"2025-07-08T21:32:41.118Z","avatar_url":"https://github.com/gregorias.png","language":"Haskell","funding_links":[],"categories":[],"sub_categories":[],"readme":"# 🧩 Rummikub Solver\n\nThis is a solver for [Rummikub][rummikub].\n\nDon't know whether there is a winning move? Someone can't finish, has made a\nmess on board, and can't retrieve original sets? Don't worry! Rummikub Solver\nautomatically finds the solution.\n\nRummikub Solver uses integer linear programming to find the solution which\nmaximizes the number of tiles placed on the table from the rack. You just need\nto provide the current description of the state of the game. Rummikub Solver\nwill display possible sets that are achievable and tiles that may be placed to\nachieve them.\n\n## Installation\n\nThis section explains how you can install this application. You have two options:\n\n- Fetch a prebuilt package.\n- Build from source.\n\n### Prebuilt Package\n\nFor Linux \u0026 Windows, you may fetch a compiled package from\n[the releases tab](https://github.com/gregorias/rummikubsolver/releases).\n\nFor Linux, you will additionally need to install GLPK (see the \"GLPK\" section\nbelow) to execute the included binary. Windows comes with the necessary DLLs\nbundled in the zip archive.\n\n### Building from source\n\n#### GLPK\n\nRummikub Solver requires\n[GLPK](https://www.gnu.org/software/glpk/) for compilation and execution. Here\nare package pointers to some selected platforms:\n\n| OS | Package |\n| -- | ------- |\n| Ubuntu | [libglpk-dev](https://packages.ubuntu.com/lunar/libglpk-dev) |\n| Arch Linux | [glpk](https://archlinux.org/packages/extra/x86_64/glpk/) |\n| MacOS | [Homebrew GLPK](https://formulae.brew.sh/formula/glpk) |\n| Windows (Msys2) | [mingw-w64-x86_64-glpk](https://packages.msys2.org/package/mingw-w64-x86_64-glpk) |\n\n#### Build\n\nFirstly, install a Haskell toolchain.\nThis can be easily done with [GHCup](https://www.haskell.org/ghcup/).\n\nSecondly, use Stack to build \u0026 install the package with:\n\n```bash\nstack build\nstack install\n```\n\n## Usage\n\nShortly, run `rummikubsolver` and go to `http://127.0.0.1:8080`.\n\nRummikub Solver has 2 UIs available: CLI and GUI. GUI is turned on by default\nand uses [threepenny-gui](https://hackage.haskell.org/package/threepenny-gui)\nto run a web interface. To use the GUI, visit `127.0.0.1:8080`.\n\nYou can run Rummikub Solver after installation by executing `rummikubsolver`.\n\nBoth interfaces use special syntax for adding or removing tiles from the table\nor the rack. For example:\n\n```plaintext\n-lr1-3 // Remove (-) blue (l) and red (r) tiles of value from 1 to 3.\ny10 // Add a yellow (y) 10 tile\nj // Add a joker (j)\n-j, b2 // Remove a joker (j) and add black (b) 2.\n```\n\nFormally the queries have following syntax:\n\n```plaintext\nQUERY ::= [-] (COLOR+ (VALUE | VALUE_RANGE) | j)\nCOLOR ::= [rlyb]\nVALUE ::= 1-13\nVALUE_RANGE ::= VALUE - VALUE\n```\n\n## Screenshot\n\n![screenshot](doc/rummikubsolver.jpg)\n\n## Acknowledgments\n\nThe solver in this software is based on\n[\"Solving Rummikub Problems by Integer Linear Programming\"\nby D. Den Hertog and P. B. Hulshof](https://doi.org/10.1093/comjnl/bxl033).\n\n## Final remarks\n\nThis program was done to train my Rummikub skills and as a helping tool for\nboard game nights.\n\n[rummikub]: https://en.wikipedia.org/wiki/Rummikub\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregorias%2Frummikubsolver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fgregorias%2Frummikubsolver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fgregorias%2Frummikubsolver/lists"}