使用prolog将数字分类为大、中、小?

使用prolog将数字分类为大、中、小?,prolog,classification,Prolog,Classification,目前正在尝试使用谓词分类(+N,?分类)解决Prolog类中的一个问题: 小数字在50以下,中等数字在50到100之间(含50到100),大数字在100以上。例如,分类(24,X)应该在X=small时成功 我有简单的分类,但我不确定如何设置实际的谓词 small(X) :- X < 50. medium(X) :- X >= 50, X =< 100. big(X) :- X > 100. small(X):-X=50,X=100。 非常感谢您的帮助 最好将“数字

目前正在尝试使用谓词分类(+N,?分类)解决Prolog类中的一个问题: 小数字在50以下,中等数字在50到100之间(含50到100),大数字在100以上。例如,分类(24,X)应该在X=small时成功

我有简单的分类,但我不确定如何设置实际的谓词

small(X) :- X < 50.
medium(X) :- X >= 50, X =< 100.
big(X) :- X > 100. 
small(X):-X<50。
中等(X):-X>=50,X=<100。
大(X):-X>100。
非常感谢您的帮助

最好将“数字”连接到其“类别”的代表,在这种情况下,该类别是原子
之一。这符合练习的要求:

%分类(+N,?分类)
分类(N,小):-…保护…测试N的小。。。
分类(N,中等):-…守卫…测试N的中等。。。
分类(N,大):-…守卫…测试N的大。。。
“guard”可以检查
classify/2
是否是用“
N
一个数字”调用的,而不是其他内容,也可能是尚未绑定的变量。根据可以忽略的情况,否则可以使用类似于
必须/2
的谓词:

所以我们写:

分类(N,小):-必须是(数字,N),N<50。
分类(N,中等):-必须是(数字,N),N>=50,N=<100。
分类(N,大):-必须是(数字,N),N>100。
我们还知道,对于
N
,这三种情况中只有一种可以成功,因此我们可以告诉Prolog,如果成功了,就不需要使用
尝试其他方法在前两个子句的末尾(您也可以将其添加到第三个子句中,但它在那里没有任何作用,它是最后一个子句):

分类(N,小):-必须是(数字,N),N<50!。
分类(N,中等):-必须是(数字,N),N>=50,N=<100!。
分类(N,大):-必须是(数字,N),N>100。
因此:

?-分类(100,如何)。
How=中等。
?分类(100,大)。
错。
?分类(100,中等)。
对。
?分类(N,中等)。
错误:参数没有充分实例化
最好将“数字”连接到其“类别”的代表,在这种情况下,该类别是原子
之一。这符合练习的要求:

%分类(+N,?分类)
分类(N,小):-…保护…测试N的小。。。
分类(N,中等):-…守卫…测试N的中等。。。
分类(N,大):-…守卫…测试N的大。。。
“guard”可以检查
classify/2
是否是用“
N
一个数字”调用的,而不是其他内容,也可能是尚未绑定的变量。根据可以忽略的情况,否则可以使用类似于
必须/2
的谓词:

所以我们写:

分类(N,小):-必须是(数字,N),N<50。
分类(N,中等):-必须是(数字,N),N>=50,N=<100。
分类(N,大):-必须是(数字,N),N>100。
我们还知道,对于
N
,这三种情况中只有一种可以成功,因此我们可以告诉Prolog,如果成功了,就不需要使用
尝试其他方法在前两个子句的末尾(您也可以将其添加到第三个子句中,但它在那里没有任何作用,它是最后一个子句):

分类(N,小):-必须是(数字,N),N<50!。
分类(N,中等):-必须是(数字,N),N>=50,N=<100!。
分类(N,大):-必须是(数字,N),N>100。
因此:

?-分类(100,如何)。
How=中等。
?分类(100,大)。
错。
?分类(100,中等)。
对。
?分类(N,中等)。
错误:参数没有充分实例化