Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi G - M > Logica matematica
 
Esercizio ProLog - compitino 17 giugno
Clicca QUI per vedere il messaggio nel forum
Paolo74GRS
Ciao a tutti.. posto questo messaggio per chiedere a qualcuno di voi la risoluzione del primo esercizio del compitino di ProLog dello scorso 17 giugno... ho provato diverse volte a farlo e rifarlo ma.... gli ultimi passaggi, dove le conc dovrebbero compormi la lista L2 inversa rispetto ad L1 mi fanno perdere in un labirinto!!!

HELP!!! :?

:pensa:

:help:

..questo è il programma ed il relativo quesito:

conc([], L, L).
conc([X|L1], L2, [X|L3]):- conc(L1, L2, L3).
invers([], []).
invers([T|C], L2):- invers(C, L1), conc(L1, [T], L2).

L1=[e, f, g], invers(L1, L2).

...il risultato, testato anche con SWI-ProLog, è:

L1 = [e, f, g],
L2 = [g, f, e]

:?

Lightbreeze
Dovrebbe essere così
la prima parte è semplice:
cambio variabili -> H=[e, f, g], invers(H, K).
regola 1 -> invers([e,f,g], K).
regola 4 -> invers( [f,g], A), conc(A, [e],K).
regola 4 -> invers([g], B), conc(B, [f], A), conc(A, [e],K).
regola 4 -> invers([], D), conc(D, [g], B), conc(B, [f], A), conc(A, [e],K).
regola 3 (D=[]) -> conc([], [g], B), conc(B, [f], A), conc(A, [e],K).
regola 1 (B=[g]) -> conc([g], [f], A), conc(A, [e],K).
ora,
regola 2 X=g, L1=[], L2=[f], A=[g|L3] -> conc([],[f],L3), conc([g|L3], [e], K).
regola 1 L3=[f] -> conc([g,f], [e], K).
regola 2 X'=g, L1'=[f], L2'=[e], K=[g|L3'] -> conc([f], [e], L3').
regola 2 X"=f, L1"=[], L2"=[e], L3'=[f|L3"] -> conc([], [e], [L3"]).
regola 1 L3"=[e] -> clausola vuota
Finito! H=[e,f,g] K=[g|L3'] = [g| [f|L3"] ] =[g|[f|[e]]]= [g,f,e]
Spero sia comprensibile :D

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate