0

我有一个 eval 解决方案,用户需要输入人名并给出一定的值,我试图让它工作,但输入部分不起作用。

preferencia(ana,joana,1).
preferencia(ana,rui,-1).
preferencia(ana,maria,1).
preferencia(ana,jose,-1).
preferencia(ana,tiago,-1).
preferencia(ana,andre,1).
preferencia(joana,rui,2).
preferencia(joana,maria,1.5).
preferencia(joana,jose,-1).
preferencia(joana,tiago,1).
preferencia(joana,andre,-1).
preferencia(rui,maria,1).
preferencia(rui,jose,-1).
preferencia(rui,tiago,1).
preferencia(rui,andre,1).
preferencia(maria,jose,-1).
preferencia(maria,tiago,1).
preferencia(maria,andre,-1).
preferencia(jose,tiago,1).
preferencia(jose,andre,1).
preferencia(tiago,andre,-1).
preferencia(X,Y,D):-preferencia(Y,X,D),!. % reverse preferenciaance



% representation: S is a list of persons


% evaluation function:
eval([_],0).
eval([Name1,Name2|R],DS):- 
    preferencia(Name1,Name2,D),
    eval([Name2|R],DR),
    DS is D+DR.

start :- write('Pick 2 Person to make a group '), read(X), eval([X,X|R],DS).

我希望用户通过控制台输入 2 个名称,所以我希望控制台像这样工作,“选择 2 个人组成一个组”,用户输入(例如 rui,maria),并返回他们偏好的值。如果我输入 eval([rui,mariaR],DS) 它返回值 1 ,但这仅以静态方式,我希望用户能够选择 2 个名称并返回他们的偏好级别。我相信主要错误是启动功能,谢谢

4

0 回答 0