lang/prolog/1.8.7/src/topographie

Raw file
Back to index

member(X,[X|_]). 
member(X,[_|Y]):- 
    member(X,Y). 
   
append([],L,L). 
append([X|A],B,[X|C]):- 
    append(A,B,C). 
   
efface(A,[A|L],L):- 
    !. 
efface(A,[B|L],[B|M]):- 
    efface(A,L,M). 
efface(_,[],[]). 
   
   
nol(N):- 
    read(N). 
   
input(_,_,N,N,L,L). 
input(X,Y,R,N,L,O):- 
    read(X), 
    read(Y), 
    append([[X,Y]],L,M), 
    C IS R+1, 
    input(_,_,C,N,M,O). 
   
enter(L):- 
    nol(N), 
    input(X,Y,0,N,[],L). 
   
   
searchnext(X,Y,[H|T]):- 
    H=[X,Y]; 
    H=[Y,X]; 
    searchnext(X,Y,T). 
   
onemove(_,_,[],L):- 
    write(L). 
onemove(X,Y,L,H):- 
    searchnext(X,Y,L), 
    efface([X,Y],L,N), 
    L<>N, 
    write(N),elan(line), 
    append(H,[Y],F),     
    onemove(Y,Z,N,F). 
onemove(X,Y,L,H):- 
    searchnext(X,Y,L), 
    efface([Y,X],L,N), 
    L<>N, 
    write(N),elan(line), 
    append(H,[Y],F),     
    onemove(Y,Z,N,F). 
   
   
   
go:- 
    enter(L),!, 
    onemove(X,Y,L,[X]).