SWI-Prolog C#迭代列表作为结果

时间:2014-01-10 17:17:38

标签: c# prolog swi-prolog

我的文件中有一些谓词。

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永远奔跑,永不止步!我不知道为什么。我尝试了很多东西,但我认为这是正确的方法。有人能帮助我吗?

0 个答案:

没有答案