Ho un predicato, che enumera attraverso la lista dei valori di backtracking. Voglio trovare il valore più alto da questo elenco.
Ad esempio:
ranked_move(X,Y,R) :- between(0,10,Y), between(0,10,X), rank_move(X,Y,R).
top_move(X,Y) :- % X, Y for highest R
In questo momento, l'ho risolto utilizzando findall
e il predicato personalizzato che passa attraverso l'elenco e ricorda il valore più alto che incontra. Ma mi piacerebbe sapere se c'è modo di farlo senza prima trasformare le mosse in una lista. Per esempio. fai il predicato del prelievo direttamente su ranked_move
.
Conosco il link . Non l'ho provato, ma presumo che Prolog non abbia intenzione di analizzare i predicati in modo efficiente.