如何查找符合特定mana_cost规则的MTG卡牌图顶点?
解决方案:查询符合法术力费用要求的MTG卡牌
要实现你的需求,核心是先解析mana_cost字符串计算法术力转换费用(CMC),再匹配颜色需求,具体步骤和查询语句如下:
核心逻辑
目标费用{2}{G}的核心要求是:
- 总CMC ≤ 3(2点任意法术力+1点绿色法术力,总和为3)
- 卡牌能提供至少1点绿色法术力(包括混色符号如
U/G这种可选择绿色的情况)
具体Cypher查询
MATCH (c:Creature) WITH c, -- 拆分mana_cost为单个法术力符号(去掉首尾{}并过滤空值) [x | x in split(replace(c.mana_cost, '{', ''), '}') WHERE x <> ''] AS symbols WITH c, symbols, -- 计算总CMC:数字符号转数值相加,颜色/混色符号各算1点 reduce(total_cmc = 0, symbol IN symbols | total_cmc + (CASE WHEN symbol =~ '\\d+' THEN toInteger(symbol) ELSE 1 END) ) AS cmc, -- 检查是否包含绿色法术力(包括混色符号) any(symbol IN symbols WHERE symbol CONTAINS 'G') AS has_green -- 过滤条件:CMC≤3且能提供绿色法术力 WHERE cmc <= 3 AND has_green RETURN c.name, c.mana_cost, cmc ORDER BY cmc, c.name
代码解释
- 符号拆分:用
replace去掉所有{,再用split按}拆分,最后过滤空字符串,得到干净的法术力符号列表。 - CMC计算:用
reduce遍历符号,数字符号转整数累加,颜色/混色符号统一加1,得到总法术力转换费用。 - 颜色检查:用
any函数判断是否有符号包含G,覆盖纯绿{G}、混色{U/G}等所有能提供绿色的情况。 - 过滤条件:同时满足CMC≤3和能提供绿色,精准匹配你要的
≤{2}{G}的卡牌,包括Slippery Bogle这类混色卡牌。
匹配示例
- 符合条件的卡牌:
Slippery Bogle({U/G},CMC=1,含G)、Grizzly Bears({G}{U},CMC=2,含G)、Llanowar Elves({G},CMC=1,含G) - 不符合的卡牌:
Lightning Bolt({R},不含G)、Craw Wurm({3}{G},CMC=4>3)
内容的提问来源于stack exchange,提问作者Matheus Farias
相关产品推荐
相关产品推荐

