è ansible ottenere tutti gli elementi dall’elenco delle liste in Prolog? Qualcosa come: Abbiamo getElements ([[a, b, [c]], d, e], f, g, [h, [i, j]]], S) e il risultato è: S = [a , b, c, d, e, f, g, h, i, j] … Grazie per l’aiuto.
Questo è un algoritmo per aggiungere insieme due liste: Domains list= integer* Predicates nondeterm append(list, list, list) Clauses append([], List, List) :- !. append([H|L1], List2, [H|L3]) :- append(L1, List2, L3). Goal append([9,2,3,4], [-10,-5,6,7,8], Ot). Il risultato è una lista [9,2,3,4,-10,-5,6,7,8] , e viene salvata in ” Ot “. La mia domanda è, come funziona? Quello […]
Sto cercando un modo per build un albero delle espressioni in Prolog. Ho già fatto alcuni esperimenti e ho trovato il seguente codice di lavoro (che gestirà solo le costanti e l’espressione più): const(_). plus(_, _). eval(const(R), R). eval(plus(A, B), R) :- number(A), number(B), R is A+B. eval(plus(A, B), R) :- number(A), eval(B, B_R), R […]
Devo trovare il primo valore duplicato in una lista. prep(3,[1,3,5,3,5]). Dovrebbe essere vero prep(5,[1,3,5,3,5]). Dovrebbe essere falso. Ho pensato di verificare l’uguaglianza con il valore corrente e i membri della lista precedente fino a quando trovo un duplicato, se ne trova uno testerà l’uguaglianza con X ma non ho idea di come farlo in Prolog! […]
Sono stato incaricato di implementare una versione di findall in Prolog senza utilizzare alcun built-in di Prolog tranne che per not e cut, quindi fondamentalmente in puro Prolog. Sto cercando di cercare un albero per tutti i discendenti diretti e restituire i risultati in un elenco parent(a, b). parent(b, c). parent(b, d). parent(e, d). Quello […]
Sto lavorando con il libro online “Learn Prolog now” per divertimento. Sto cercando di scrivere un predicato che attraversi ogni membro di una lista e ne aggiunga uno, usando gli accumulatori. L’ho già fatto facilmente senza ricorsione della coda. addone([],[]). addone([X|Xs],[Y|Ys]) :- Y is X+1, addone(Xs,Ys). Ma ho letto che è meglio evitare questo tipo […]
Non riesco a trovare una situazione in cui ne avrei bisogno.
È ansible avere elenchi pigri in Prolog? Qualcosa come il seguente: ones([1 | Y]) :- ones(Y). Anche se questo ovviamente non funziona come è scritto.
Ho seguito un corso in cui ho imparato un po ‘di prologo. Non riuscivo a capire come / quando usare i tagli. Anche se ho un’idea generale dei tagli, non riesco a usarli correttamente. Qualcuno può spiegarlo brevemente o dare un buon tutorial (che non è learnprolognow.org) sui “tagli” che possono consigliare?
Im nuovo in prolog che s perché la domanda può essere facile per voi ma non potrei trovare la risposta. Qualcuno può aiutarmi. Voglio semplicemente una funzione di conteggio st count([c,c,a,a,b,b,d,a,c,b,d,d,a], O). restituirà il numero di occorrenze dei membri della lista. O = [[a, 4], [b, 3], [c, 3], [d, 3]]