algav

TicTacToe

Código Prolog

Revisões ALGAV

Apresentação da aula TP.

Nota para os alunos das turmas 3DC e 3DD:

Faltava a verificação do facto
mesma_linha(O,X) após a chamada de muda_linha(X,LV,NL).

ALGAV - Torres de Hanoi

Exemplo de resolução do problema 3 da Ficha 2:

hanoi(N):-move(N,esquerda,centro,direita,0,_).

move(0,_,_,_,I,I):-!.
move(N,A,B,C,I,I2):-
M is N-1,
move(M,A,C,B,I,I1),
J is I1+1,
informa(A,B,J),
move(M,C,B,A,J,I2).

informa(A,B,I):-
write(I),write(': MOVER DISCO DE '),write(A),write(' PARA '),write(B),nl.

ALGAV - Ficha Minimax

Resolução da Ficha Prática nº 9 (Minimax)

ALGAV - Ficha 7

Hipótese de resolução da alínea 1 da Ficha 7

go(Origem,Percurso):-
findall([A,B], estrada(A,B), LL), une(LL, LN),
go1(Origem,Origem,LN,Percurso).

go1(O,X,[O],[X,O]):-

estrada(X,O);estrada(O,X).

go1(O,Ultimo,LN,[Ultimo|Perc]):-

remove(X,LN,LN1),
(estrada(Ultimo,X); estrada(X,Ult)),
go1(O,X,LN1,Perc).

união([],L,L).
união([X|L],L1,L2):-member(X,L1),!,união(L,L1,L2).
união([X|L],L1,[X|L2]):-união(L,L1,L2).

une([LH|LT],LU):-une(LT,LU1),união(LH,LU1,LU).
une([],[]).

ALGAV - Torres de Hanoi

Exemplo de resolução do problema 3 da Ficha 2:

hanoi(N):-move(N,esquerda,centro,direita,0,_).

move(0,_,_,_,I,I):-!.
move(N,A,B,C,I,I2):-
M is N-1,
move(M,A,C,B,I,I1),
J is I1+1,
informa(A,B,J),
move(M,C,B,A,J,I2).

informa(A,B,I):-
write(I),write(': MOVER DISCO DE '),write(A),write(' PARA '),write(B),nl.