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

时间:2018-05-29 10:06:12

标签: input prolog hill-climbing

我有一个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个名称并返回其偏好级别。我相信主要错误是启动功能,谢谢

0 个答案:

没有答案