{"id":23885516,"url":"https://github.com/allankoder/spellcastsolver","last_synced_at":"2025-10-08T09:49:17.063Z","repository":{"id":236344264,"uuid":"763292001","full_name":"AllanKoder/SpellCastSolver","owner":"AllanKoder","description":"Optimized and competitive solver for SpellCast","archived":false,"fork":false,"pushed_at":"2025-01-15T00:43:51.000Z","size":1451,"stargazers_count":1,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-08-20T19:12:36.666Z","etag":null,"topics":["spellcast","spelling","wordgame","wordgames"],"latest_commit_sha":null,"homepage":"","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":null,"status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AllanKoder.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2024-02-26T02:25:59.000Z","updated_at":"2025-01-15T00:43:52.000Z","dependencies_parsed_at":"2024-08-04T16:19:06.896Z","dependency_job_id":"9ec65870-c344-4ff1-a697-61b7090f438b","html_url":"https://github.com/AllanKoder/SpellCastSolver","commit_stats":null,"previous_names":["allankoder/spellcastsolver"],"tags_count":0,"template":false,"template_full_name":null,"purl":"pkg:github/AllanKoder/SpellCastSolver","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllanKoder%2FSpellCastSolver","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllanKoder%2FSpellCastSolver/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllanKoder%2FSpellCastSolver/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllanKoder%2FSpellCastSolver/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AllanKoder","download_url":"https://codeload.github.com/AllanKoder/SpellCastSolver/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AllanKoder%2FSpellCastSolver/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":278924139,"owners_count":26069400,"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","status":"online","status_checked_at":"2025-10-08T02:00:06.501Z","response_time":56,"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":["spellcast","spelling","wordgame","wordgames"],"created_at":"2025-01-04T04:50:55.281Z","updated_at":"2025-10-08T09:49:17.006Z","avatar_url":"https://github.com/AllanKoder.png","language":"Python","funding_links":[],"categories":[],"sub_categories":[],"readme":"# SpellCast Solver\nAn application for the Discord Game SpellCast. Spellcast is very similar to Boggle, where you try to find the best word possible\n\nI saw some existing solutions out there and wanted to make a faster and cleaner solution. My application can support up to 4 substitions within a minute. \n\n![image](https://github.com/AllanKoder/SpellCastSolver/assets/74692833/decd5829-2dc3-41b7-b8ad-1de6b02c21b9)\n\n_blue tile is the start of the word_\n\n_red tile is a tile that needs to be substituted_\n\n\n### Speed Improvements \n\nUsing a heap and priority prefix tree, where prefixes that lead to a higher word at the leaf are prioritized more, we can navigate through all the best words first. Afterwards, we will reach a point where the word in the heap, even with the double word multiplier and triple letter bonus, cannot beat the existing best solution. This is where we can halt.\n\n![early stopping  (for real)](https://github.com/AllanKoder/SpellCastSolver/assets/74692833/b1e08a64-6958-4030-b45a-e8c301164ae9)\n\nIn this diagram, we have a example of early stopping. There can be other heuristics added to this, where if we reach too small of a slope, we can stop the search.\n\n### How to run:\n**For Backend:**\n```\ncd spellCastSolverBackend\npy -m uvicorn main:app\n```\n**For Frontend:**\n```\ncd spellCastUI\nnpm run dev\n```\n\n### Features:\n- Up to 4 substitions\n- Very fast for competitive gameplay\n- Clean and easy UI\n- Can edit the margin of error for higher speed\n- Has a higher average case time complexity than a bruteforce prefix tree search.\n\n\n### Potential Improvements:\n- Using Monte Carlo for determining if shuffle is optimal\n- Accounting for gems and optimal gem collection\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallankoder%2Fspellcastsolver","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fallankoder%2Fspellcastsolver","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fallankoder%2Fspellcastsolver/lists"}