gpt4 book ai didi

java - Java 中的 Prolog 列表与 JPL

转载 作者:太空宇宙 更新时间:2023-11-04 12:05:07 26 4
gpt4 key购买 nike

我是一个 prolog-noob,并且对 java 中的 prolog-list 有疑问。

序言:

event(  'Number1', 
54.320021,
13.043840,
[sport,hotel,schwimmen,sauna]).
event( 'Number2',
54.320678,
13.046984,
[einkaufen]).


findAllCategories(Categories):-
findall(X, event(_,_,_,X), L),
appendCategories(C1,L),
Categories = C1.

appendCategories(C1,[R|[]]):-
C1 = R.

appendCategories(C,[R|L]):-
appendCategories(C1,L),
append(C1,R,X),
C = X.

append([],L,L).
append([H|T],L2,[H|L3]):-
append(T,L2,L3).

prologconsole中的解决方案:[einkaufen、运动、酒店、schwimmen、桑拿]

Java:

import java.util.ArrayList;
import java.util.Map;
import org.jpl7.*;

public ArrayList<String> getCategoriesByProlog(){
ArrayList<String> categories = new ArrayList<String>();

Variable X = new Variable("X");
Query q4 =
new Query(
"findAllCategories",
new Term[] {X}
);

Map<String, Term>[] solutions = q4.allSolutions();

for ( int i=0 ; i<solutions.length ; i++ ) {
System.out.println( "X = " + solutions[i].get("X"));
categories.add(solutions[i].get("X").toString());
}

return categories;

Java 中的输出:X = '[|]'(einkaufen, '[|]'(运动, '[|]'(酒店, '[|]'(schwimmen, '[|]'(桑拿, '[]')))))

如何将 prolog-term 读取为 Java 的 ArrayList?

最佳答案

您需要将其更改为如下所示的术语数组:

Map<String, Term>[] solutions = q4.allSolutions();

for (int i=0 ; i<solutions.length ; i++ )
{
System.out.println("X = " + solutions[i].get("X"));

//ADD THIS PART
Term term = solutions[i].get("X");

int u=0;
for (Term oneTerm : term.toTermArray())
{
categories.add(oneTerm);
System.out.println("term["+i+"]["+u+"] = " + oneTerm);
u++;
}
}

关于java - Java 中的 Prolog 列表与 JPL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40453583/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com