Input 用户输入,用户将数据输入列表

Input 用户输入,用户将数据输入列表,input,prolog,hill-climbing,Input,Prolog,Hill Climbing,我有一个评估解决方案,用户需要输入人名并给出一定的值,我试图让它工作,但输入部分不工作 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,

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

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).

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

请解释“不工作”。您使用的是什么查询?你期望得到什么样的结果,你得到什么样的结果?嘿,我希望用户通过控制台输入两个名字,所以我希望控制台是这样工作的,“选择两个人组成一个组”用户输入(例如rui,maria),并返回他们偏好的值。如果我输入eval([rui,mariaR],DS),它将返回值1,但这仅以静态方式,我希望用户能够选择2个名称并返回其首选级别。我相信主要的错误是启动功能,谢谢。你应该点击问题上的编辑链接,并在问题中添加相关细节。和
eval([X,X | R])。
表示列表中的前两个名字使用同一个人
X
X
相同。如果你想读两个不同的名字,你需要读两遍。可能是
X
Y