【发布时间】:2020-11-21 00:09:01
【问题描述】:
所以我正在使用 prolog,我有这样的功能:
ratingList(X):-goalKeeperRating(X,A),centreForwardRating(X,B),secondStrikerRating(X,C),centreDefenseRating(X,D),fullBackRating(X,E),centerMidfieldRating(X,F),attackingMidfieldRating(X,G),defendingMidfieldRating(X,H),
Y=[[goalKeeper,A],[centerForward,B],[secondStriker,C],[centerDefense,D],[fullBack,E],[centerMidfield,F],[attackingMidfieldRating,G],[defendingMidfieldRating,H]],
maxlist(Y,N),N=[L,M],write('Best Position ' + L + ' with rating ' +M).
基本上第一行找到数字并将其放入第二个元素,然后我们将数字放入列表(Y)中。 Y 中的所有内容都是长度为 2 的列表,其中包含足球位置名称加上我们得到的数字。 MaxList 只是找到最大的数字。看起来像这样
maxlist([A],A).
maxlist([A,B|C],D):- A=[_,X],E=[_,Y],D=[_,Z],maxlist([B|C],E),max(X,Y,Z),.
max(A,B,A):-A>=B.
max(A,B,B):-A<B.
但是,每当我尝试打印单词时,它总是会导致打印地址。无论如何我可以解决这个问题吗?
【问题讨论】:
-
你能给我们一个你正在使用的输入和输出示例吗?打印地址是什么意思?
-
@rajashekar 我想我找到了问题所在。在 maxlist 函数中,D 应该返回整个元素(这是一个名称和数字的列表)。但是,D 中的名称类似于 G1562。但是,我仍然不知道如何解决它
标签: prolog