谓词类别的Prolog检查

谓词类别的Prolog检查,prolog,Prolog,从今天起,我一直在使用Prolog,希望创建一个简单的测试用例。基本思想是定义多种运动,如下所示: soccer :- category(ball_sport), check(has_11_players_per_team), check(large_ball), check(use_feet). tennis :- category(ball_sport), ... category(ball_sport) :- check(has_a_ball).

从今天起,我一直在使用Prolog,希望创建一个简单的测试用例。基本思想是定义多种运动,如下所示:

soccer :- category(ball_sport),
    check(has_11_players_per_team),
    check(large_ball),
    check(use_feet).
tennis :- category(ball_sport),
    ...

category(ball_sport) :- 
    check(has_a_ball).
现在我想创建一个测试用例,看看这两种运动是否都属于ball_sport类别,但不知道如何将这些运动相互对比。。我以为它会像下面的代码一样,但显然不是。有没有一种简单的方法来检查这些谓词类别?谢谢

 both_ballsports(sport_one, sport_two) :-
        has_category(sport_one, ball_sport),
        has_category_sport_two, ball_sport).

似乎首先,您要声明一项运动的属性

例如:

sport_attributes(soccer, [ball_sport,players(22),ball(large),use(feet)]). sport_attributes(tennis, [ball_sport,players(2),players(4),ball(small),use(racket)]). 查询和回答示例:

?- both_ballsports(Sport1, Sport2). Sport1 = Sport2, Sport2 = soccer ; Sport1 = soccer, Sport2 = tennis ; Sport1 = tennis, Sport2 = soccer ; Sport1 = Sport2, Sport2 = tennis ; false. -两种运动(运动1、运动2)。 Sport1=Sport2,Sport2=足球; Sport1=足球, Sport2=网球; Sport1=网球, Sport2=足球; Sport1=Sport2,Sport2=网球; 错。
这可用于所有方向

你用什么作为你的学习资源?一本书?一个网站?@GuyCoder它来自学校,它只发布了下面的链接来创建我们自己的。想法是基于此,并为我们自己的谓词创建测试用例(注意,它只是一个进入序言的部分)。我想这确实是我要找的,我希望直接检查它,而不定义所有这些属性,因为它看起来有点多余(或者我会检查它们是否可以被替换),但是非常感谢,这就是它需要做的! ?- both_ballsports(Sport1, Sport2). Sport1 = Sport2, Sport2 = soccer ; Sport1 = soccer, Sport2 = tennis ; Sport1 = tennis, Sport2 = soccer ; Sport1 = Sport2, Sport2 = tennis ; false.