好的,我已经实现了谓词N
它的工作原理如下
c1 = coords[:, None]
c2 = coords[:, :, None]
areas = tf.reduce_prod(tf.maximum(
tf.minimum(c1[..., 1], c2[..., 1]) - tf.maximum(c1[..., 0], c2[..., 0]), 0.), axis=-1)
我想构建一个谓词cost = tf.reduce_sum(areas) - tf.reduce_sum(tf.trace(areas))
,找出班级中实施show(Name,Grade).
的最差学生,然后按?-show(Name,8).
Name=Jim;
Name=Ann;
false
?-show('Jim',Grade).
Grade=8;
false
返回第二个最差学生,然后第三个像这样
worstGrades(Name,Grade)
我认为该解决方案与使用(0,10)的Grades变量递归访问
show(Name,Grade)
有关,但我现在无法想到这样做的方法。任何帮助?
答案 0 :(得分:2)
您可以使用以下内容:
show('Jim',8).
show('Anne',8).
show('bob',6).
show('fred',7).
worst_grades(Name,Grade):-
setof(Grade-Name,show(Name,Grade),Grades),
member(Grade-Name,Grades).
查询:
?-worst_grades(Name,Grade).
Grade = 6,
Name = bob;
Grade = 7,
Name = fred;
Grade = 8,
Name = 'Anne';
Grade = 8,
Name = 'Jim'