{"adoption": {"forks": 850, "observed_at": "2026-08-28T04:06:13.613834+00:00", "stars": 2101}, "canonical_url": "https://ross.abutalabs.com/products/q_algorithm", "card": {"archived": false, "artifact_type": "library", "description": "棋牌的胡牌算法，包括麻将、跑胡子、扑克。实现 lua 、c++ 、c# 、golang 、js 、java 、python 版本。( Mahjong  algorithm )", "domain": ["gaming-tools"], "enriched": true, "function": ["parser", "developer-tools"], "health_score": 20, "homepage": null, "language": "Lua", "license": null, "license_family": "other", "maturity": "active", "member_repos": ["yuanfengyun/q_algorithm"], "name": "yuanfengyun/q_algorithm", "platform": ["cross-platform", "lua", "cpp", "python", "go", "jvm", "dotnet"], "pushed_at": "2024-06-14T02:49:03+00:00", "repo": "yuanfengyun/q_algorithm", "stars": 2101, "tags": ["mahjong", "win-detection", "card-games", "paohuzi", "doudizhu", "multi-language", "table-lookup", "algorithm", "game-development", "algorithms", "javascript"], "topics": ["lua", "majhong", "paohuzi", "doudizhu", "algorithm"], "urls": [], "use_cases": ["check if a mahjong hand is a winning hand", "detect mahjong winning hands with jokers/wildcards", "judge special mahjong patterns like seven pairs or thirteen orphans", "implement hu detection for a mahjong game server", "validate paohuzi card hands", "split and analyze tile hands for game logic"], "what_it_is": "A multi-language library implementing efficient winning-hand (hu) detection algorithms for tile and card games, including Mahjong, Paohuzi, and Doudizhu. It supports arbitrary numbers of wildcards (jokers) and special hand pattern detection, with implementations in Lua, C++, C#, Golang, JS, Java, and Python.", "when_to_avoid": ["you need full game rules, scoring, or AI opponents - this only judges hands", "you work in a language not among the provided implementations", "you require a maintained release with a license for commercial use"], "when_to_choose": ["you need fast, battle-tested mahjong win detection in one of the supported languages", "your game must handle arbitrary wildcard (lai zi) counts", "you need special hand pattern recognition (qing yi se, peng peng hu, etc.)"]}, "data_as_of": "2026-08-30T08:39:29.467469+00:00", "members": [{"path": "/products/q_algorithm", "repo": "yuanfengyun/q_algorithm", "role": "main", "score": 32}], "provenance": {"archived": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.613834+00:00", "source": "github"}, "artifact_type": {"confidence": null, "enriched_at": "2026-08-30T02:54:19.328705+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9868893f5e6740c1f7b4abe26c81ee6e06e3b867c5c0b742910610612090c032", "fetched_at": "2026-08-28T04:06:13.613834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuanfengyun/q_algorithm"}], "taxonomy_version": 1}, "description": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.613834+00:00", "source": "github"}, "domain": {"confidence": null, "enriched_at": "2026-08-30T02:54:19.328705+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9868893f5e6740c1f7b4abe26c81ee6e06e3b867c5c0b742910610612090c032", "fetched_at": "2026-08-28T04:06:13.613834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuanfengyun/q_algorithm"}], "taxonomy_version": 1}, "enriched": {"inputs": [], "kind": "computed", "method": "enrichment_status"}, "function": {"confidence": null, "enriched_at": "2026-08-30T02:54:19.328705+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9868893f5e6740c1f7b4abe26c81ee6e06e3b867c5c0b742910610612090c032", "fetched_at": "2026-08-28T04:06:13.613834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuanfengyun/q_algorithm"}], "taxonomy_version": 1}, "health_score": {"inputs": ["days_since_push", "days_since_release", "archived"], "kind": "computed", "method": "health_v1"}, "homepage": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.613834+00:00", "source": "github"}, "language": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.613834+00:00", "source": "github"}, "license": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.613834+00:00", "source": "github"}, "license_family": {"inputs": ["license"], "kind": "computed", "method": "license_family"}, "maturity": {"confidence": null, "enriched_at": "2026-08-30T02:54:19.328705+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9868893f5e6740c1f7b4abe26c81ee6e06e3b867c5c0b742910610612090c032", "fetched_at": "2026-08-28T04:06:13.613834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuanfengyun/q_algorithm"}], "taxonomy_version": 1}, "member_repos": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.613834+00:00", "source": "github"}, "name": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.613834+00:00", "source": "github"}, "platform": {"confidence": null, "enriched_at": "2026-08-30T02:54:19.328705+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9868893f5e6740c1f7b4abe26c81ee6e06e3b867c5c0b742910610612090c032", "fetched_at": "2026-08-28T04:06:13.613834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuanfengyun/q_algorithm"}], "taxonomy_version": 1}, "pushed_at": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.613834+00:00", "source": "github"}, "repo": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.613834+00:00", "source": "github"}, "stars": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.613834+00:00", "source": "github"}, "tags": {"confidence": null, "enriched_at": "2026-08-30T02:54:19.328705+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9868893f5e6740c1f7b4abe26c81ee6e06e3b867c5c0b742910610612090c032", "fetched_at": "2026-08-28T04:06:13.613834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuanfengyun/q_algorithm"}], "taxonomy_version": 1}, "topics": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.613834+00:00", "source": "github"}, "urls": {"kind": "observed", "observed_at": "2026-08-28T04:06:13.613834+00:00", "source": "github"}, "use_cases": {"confidence": null, "enriched_at": "2026-08-30T02:54:19.328705+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9868893f5e6740c1f7b4abe26c81ee6e06e3b867c5c0b742910610612090c032", "fetched_at": "2026-08-28T04:06:13.613834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuanfengyun/q_algorithm"}], "taxonomy_version": 1}, "what_it_is": {"confidence": null, "enriched_at": "2026-08-30T02:54:19.328705+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9868893f5e6740c1f7b4abe26c81ee6e06e3b867c5c0b742910610612090c032", "fetched_at": "2026-08-28T04:06:13.613834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuanfengyun/q_algorithm"}], "taxonomy_version": 1}, "when_to_avoid": {"confidence": null, "enriched_at": "2026-08-30T02:54:19.328705+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9868893f5e6740c1f7b4abe26c81ee6e06e3b867c5c0b742910610612090c032", "fetched_at": "2026-08-28T04:06:13.613834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuanfengyun/q_algorithm"}], "taxonomy_version": 1}, "when_to_choose": {"confidence": null, "enriched_at": "2026-08-30T02:54:19.328705+00:00", "kind": "inferred", "prompt_version": 1, "sources": [{"content_hash": "9868893f5e6740c1f7b4abe26c81ee6e06e3b867c5c0b742910610612090c032", "fetched_at": "2026-08-28T04:06:13.613834+00:00", "kind": "readme", "missing": false, "url": "https://github.com/yuanfengyun/q_algorithm"}], "taxonomy_version": 1}}, "score": {"components": {"activity": 0, "longevity": 100, "rhythm": 35}, "computed_at": "2026-09-03T02:39:23.370411+00:00", "flags": ["no_releases", "no_license"], "formula": "round(0.45*activity + 0.35*rhythm + 0.20*longevity); archived -> min(score, 10)", "inputs": {"age_days": 3530, "days_push": 810, "days_rel": null, "gap_med": null, "n_releases_24m": 0}, "score": 32, "version": 2}, "staleness": {"enrichment_outdated": false, "low_confidence": false, "scrape_days": 9, "stale_scrape": false}}