Prolog 人工智能语言中文论坛---打造优质Prolog学习交流园地

一个供Prolog爱好者学习与交流的地方


您没有登录。 请登录注册

急急急!求问,怎么循环比较大小,最后输出一条链?

浏览上一个主题 浏览下一个主题 向下  留言 [第1页/共1页]

是这样的,我需要输入一个矩阵如下图输出一条数据链.输出的规则是这样的:

从A开始,每次比较一行或一列的数字大小,输出对应数值最大的那么字母,对应的数字用了一遍就不能再用第二遍。

例如:A---L(0.9)---B(0.8)---K(0.7)---D(0.6)---J(0.5)---E(0.9)---I(0.6)---A(0.7)

请问这用prolog+c该怎么实现呢?



HIJKL
A
+0.7+0.6+0.8+0.9
B+0.5
+0.6+0.7+0.8
C+0.9+0.5

+0.7
D+0.3+0.4+0.5+0.6+0.6
E+0.6+0.6+0.9+0.5
F
+0.6+0.6
+0.5
G+0.6+0.5
+0.4+0.4

查阅用户资料

2 怎么循环比较大小,最后输出一条链 于 周四 六月 04, 2015 2:11 am

%%%%% Next Input Please %%%%%
smallest(A,A,[]):-!.
smallest(X,E,[H|T]):-
  E<H->smallest(X,E,T);
       smallest(X,H,T).

getsmallest(X,[H|T]):-
  smallest(X,H,[H|T]).

append([],L,L):-!.
append([X|L1],L2,[X|L3]):-append(L1,L2,L3).

smlist(L,[],L):-!.
smlist(L,[E|T],R):-
  getsmallest(XX,E),
  append(L,[XX],RR),
  smlist(RR,T,R).


?-smlist([],[[+0.7,+0.6,+0.8,+0.9],[+0.5,+0.6,+0.7,+0.8],[+0.9,+0.5,+0.7],[+0.3,+0.4,+0.5,+0.6,+0.6],[+0.6,+0.6,+0.9,+0.5],[+0.6,+0.6,+0.5],[+0.6,+0.5,+0.4,+0.4]]
,R).



R = [+0.6, +0.5, +0.5, +0.3, +0.5, +0.5, +0.4]
** yes

%%%%% Next Input Please %%%%%

查阅用户资料

浏览上一个主题 浏览下一个主题 返回页首  留言 [第1页/共1页]

您在这个论坛的权限:
不能在这个论坛回复主题