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

如何找出父母平均年龄最小的人员列表?Prolog代码求助

解决父母平均年龄最小的人员列表问题

你的代码当前是在计算父母自身的平均年龄(实际就是父母的年龄,因为每个父母的年龄被重复计算了他们孩子的次数),而不是计算每个孩子的父母的平均年龄。这是核心问题所在。

以下是修正后的代码,分为两种场景:包含所有有至少一位已知年龄父母的孩子,以及仅包含有双亲(父母均存在且年龄已知)的孩子。

通用辅助谓词

% 定义父亲和母亲关系(你的代码这部分是正确的)
father(X, Y) :- parent_child(X, Y), male(X).
mother(X, Y) :- parent_child(X, Y), female(X).

% 获取某孩子Y的所有已知年龄的父母的年龄列表
parent_ages(Y, Ages) :-
    findall(Age, (parent_child(P, Y), age(P, Age)), Ages).

% 计算列表的平均值
average(Ages, Avg) :-
    sum_list(Ages, Sum),
    length(Ages, Count),
    Count > 0,
    Avg is Sum / Count.

场景1:包含所有有至少一位已知年龄父母的孩子

此场景会统计所有有父母(无论一位或两位)且父母年龄已知的孩子:

% 计算每个孩子的父母平均年龄
child_parent_average(Y, Avg) :-
    parent_ages(Y, Ages),
    average(Ages, Avg).

% 找出父母平均年龄最小的人员列表
min_average_age(Persons) :-
    % 收集所有孩子及其父母平均年龄的配对
    findall(Y-Avg, child_parent_average(Y, Avg), Pairs),
    % 处理无符合条件人员的边界情况
    (Pairs = [] ->
        Persons = []
    ;
        % 找到最小的平均年龄
        aggregate_all(min(Avg), member(_-Avg, Pairs), Min),
        % 收集所有拥有该最小平均年龄的孩子
        findall(Y, member(Y-Min, Pairs), Persons)
    ).

查询结果:min_average_age(Persons). → Persons = [ann, pat, peter](这三个孩子的父母平均年龄均为20,仅父亲bob的年龄已知)。

场景2:仅包含有双亲(父母均存在且年龄已知)的孩子

此场景严格筛选出有双亲且父母年龄均已知的孩子:

% 检查孩子是否有双亲(父亲和母亲都存在)
has_two_parents(Y) :-
    father(_, Y),
    mother(_, Y).

% 计算有双亲且父母年龄均已知的孩子的父母平均年龄
child_two_parents_average(Y, Avg) :-
    has_two_parents(Y),
    parent_ages(Y, Ages),
    length(Ages, 2), % 确保父母双方年龄都已知
    average(Ages, Avg).

% 找出有双亲的孩子中父母平均年龄最小的人员列表
min_average_age_two_parents(Persons) :-
    findall(Y-Avg, child_two_parents_average(Y, Avg), Pairs),
    (Pairs = [] ->
        Persons = []
    ;
        aggregate_all(min(Avg), member(_-Avg, Pairs), Min),
        findall(Y, member(Y-Min, Pairs), Persons)
    ).

查询结果:min_average_age_two_parents(Persons). → Persons = [bob](仅bob有双亲pam和tom,年龄分别为40和50,平均45)。

关键调整说明

  • 切换计算视角:从遍历父母改为遍历孩子,收集每个孩子的父母年龄并计算平均。
  • 加入双亲检查逻辑,满足你提到的需求。
  • 处理了无符合条件人员的边界情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.14 07:25:22