我的文件中有一些谓词。
cam_curto(User1,User2,Cam):-cam_curto(User1,User2,[User1],Cam).
cam_curto(User1,User1,LA,Cam):-reverse(LA,Cam).
cam_curto(User1,User2,LA,Cam):- liga(User1,Z,_,_), \+ member(Z,LA), cam_curto(Z,User2,[Z|LA],Cam).
mais_curto(UserA,UserB,CamCurto):- findall((Tam,Caminho),(cam_curto(UserA,UserB,Caminho),length(Caminho,Tam)),LSol), sort(LSol,LSolOrd),reverse(LSolOrd , ListaFinal), ListaFinal=[(_,CamCurto)|_],!.
真正的疑问不是关于本身的序言,因为我们测试了它并且它有效!
但是在我的C#应用程序中,我想调用谓词mais_curto(UserA,UserB,CamCurto)
CamCurto
是两个用户之间最短路径的列表。
在C#中我如何获得结果列表?
public static List<int> caminhoMaisCurto(int iduser1, int iduser2)
{
List<int> ret = new List<int>();
PlQuery q = new PlQuery("cam_curto(" + iduser1 + "," + iduser2 + ",C).");
foreach(PlTermV v in q.Solutions)
{
}
return ret;
}
foreach永远奔跑,永不止步!我不知道为什么。我尝试了很多东西,但我认为这是正确的方法。有人能帮助我吗?