1

私はプロローグ初心者で、Java のプロローグ リストに問題があります。

プロローグ:

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,sport,hotel,schwimmen,sauna]

ジャワ:

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, '[|]'(sport, '[|]'(hotel, '[|]'(schwimmen, '[|]'(sauna, '[]')) ))))))

prolog-term を Java の ArrayList として読み取るにはどうすればよいですか?

4

1 に答える 1