You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何基于元组评分数据统计对所有参评电影评分均相同的影迷列表?

解题思路
  • 核心逻辑是按影迷分组统计所有评分,判断每个影迷的评分是否全部相同:只要该影迷的所有评分去重后只有1种(仅参评1部自然满足该条件),即符合要求
  • 实现上用Data.Map做影迷到评分列表的分组映射,用Data.Set做评分去重判断
完整实现代码
import qualified Data.Map as M
import qualified Data.Set as S

type Fan = String
type Film = String
type Score = Int
-- 输入的参评记录类型
type RatingRecord = (Fan, Film, Score)

getConsistentFans :: [RatingRecord] -> [Fan]
getConsistentFans records = M.keys $ M.filter isConsistent fanToScores
  where
    -- 1. 按影迷分组,收集对应所有评分
    fanToScores = M.fromListWith (++) [ (fan, [score]) | (fan, _, score) <- records ]
    -- 2. 判断是否所有评分一致:转Set去重后元素个数不超过1
    isConsistent scores = S.size (S.fromList scores) <= 1
示例测试

输入:

getConsistentFans [("fan1", "f1", 3), ("fan1", "f2", 3), ("fan2", "f1", 5)]

输出:

["fan1","fan2"]

和预期结果完全匹配。

内容的提问来源于stack exchange,提问作者user17468100

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.25 13:06:09