PDA

View Full Version : [PROLOG] Vari problemi


Cimmo
08-06-2005, 18:17
Sto studiando il Prolog, sono all'inizio e faccio fatica a capire alcune cose, forse perche' ho studiato 100 linguaggi prima di lui quando dovrebbe essere la base.

Ho questo codice, vorrei che dato il numero della domanda mi sputasse fuori la stringa relativa.
Non funzia, escono fuori dei _G287 cose del genere...

domanda([d(1,'a'),
d(2,'b'),
d(3,'c')]).

testoDomanda(N,D,domanda([d(N,D)|T])):- !.
testoDomanda(N,D,domanda([H|T])):- testoDomanda(N,D,domanda(T)).

ask(A):-
nl,
testoDomanda(2,X,domanda(L)),
write(X).

soalle
08-06-2005, 18:35
uhmmmmmm.....
mi sembra di averlo già visto questo codice....

soalle
08-06-2005, 19:14
non ho capito se è quello che intendevi... però prova questo:

testoDomanda(N,D,domanda([d(N,D)|T])):-!.
testoDomanda(N,D,domanda([H|T])):- testoDomanda(N,D,domanda(T)).

ask(A):-
testoDomanda(1,A,domanda([d(1,'a a'), d(2,b), d(3,c)])).

soalle
08-06-2005, 19:16
oppure prova questo:

domanda([d(1,a),
d(2,b),
d(3,c)]).

testoDomanda(N,D,domanda([d(N,D)|T])):-!.
testoDomanda(N,D,domanda([H|T])):- testoDomanda(N,D,domanda(T)).

ask(A):- domanda(L),
testoDomanda(1,A,domanda(L)).


dovrebbe andare...

Cimmo
08-06-2005, 19:19
Esatto!

soalle
08-06-2005, 19:19
ho aiutato Cimmo che emozione!!!!
:D

Cimmo
15-06-2005, 17:58
Mitico soalle, visto che ne sai cosi' tanto e che non ho un amico cosi' bravo come te in prolog mi faresti un altro favore?
Come faccio a sbattere la roba dentro a domandefatte? Io faccio l'append dei nuovi elementi, ma in domandefatte non rimane nulla...

domanda([d(0,'cimmo'),
d(1,'a'),
d(2,'b')]).

domandefatte([]).

testoDomanda(N,D,[d(N,D)|T]):-!.
testoDomanda(N,D,[H|T]):- testoDomanda(N,D,T).

append([],L,L).
append([T|C],L1,[T|L2]):-append(C,L1,L2).


casual(N,L,R,L1):-N is random(3), casuale(N,L,L1), R is N.
casuale(N,L,L1):-not(member(N,L)), write('N:'), write(N), append([N],L,L1).
casuale(N,L,L1):-member(N,L), write('b'), N1 is random(3), casuale(N1,L,L1).

ask(A):- domanda(L), domandefatte(L1), write(L1), casual(N,L1,R,L2), testoDomanda(R,A,L).