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

如何用Prolog编写规则查询同年开播的剧集配对?

Prolog实现同开播年份剧集查询的解决方案

问题原因

你当前定义的same_year/1规则仅做了存在性校验,没有设置参数承载剧集返回值,因此查询时仅会返回布尔结果,无法输出匹配的剧集内容。

正确实现方案

1. 基础事实(你已定义)

show( seinfeld   , 1989 , 8.9 ).
show( twin_peaks , 1990 , 8.9 ).
show( the_xfiles , 1993 , 8.7 ).

2. 单年份对应单剧集查询规则

如果你需要查询指定年份下的所有剧集(Prolog会逐一枚举返回),定义双参数规则即可:

same_year_show(Year, Show) :- 
    show(Show, Year, _). % 下划线表示忽略评分参数

查询示例:

输入查询same_year_show(1989, Show).,Prolog会返回Show = seinfeld,如果有多个匹配结果会逐个返回。

3. 一次性获取指定年份的所有剧集列表

如果需要直接返回列表形式的所有匹配结果,可以配合Prolog内置的findall谓词查询,不需要额外定义规则:

查询示例:

输入findall(Show, show(Show, 1989, _), ShowList).,会直接返回ShowList = [seinfeld]。

4. 同年份剧集配对查询规则

如果你需要得到开播年份相同的两两剧集对(避免重复配对、避免同一剧集和自身配对),可以用如下规则:

same_year_pair(Year, ShowA, ShowB) :-
    show(ShowA, Year, _),
    show(ShowB, Year, _),
    ShowA @< ShowB. % 按字典序比较避免重复配对

查询示例:

输入查询same_year_pair(Year, S1, S2).,会枚举所有符合条件的同年份剧集对。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 12:15:08