acces(a,b,2,1). acces(b,a,2,1). acces(b,c,2,1). acces(c,b,2,0). acces(c,d,2,0). acces(d,c,2,1). acces(d,e,2,1). acces(e,d,2,1). acces(e,f,2,1). acces(f,e,2,1). acces(f,g,2,1). acces(g,f,2,1). acces(t,s,3,1). acces(s,t,3,1). acces(b,r,3,1). acces(r,b,3,1). acces(b,s,3,1). acces(s,b,3,1). acces(r,q,3,1). acces(q,r,3,1). acces(q,l,3,1). acces(l,q,3,1). acces(l,p,3,1). acces(p,l,3,1). acces(p,o,3,0). acces(o,p,3,1). acces(n,m,1,1). acces(m,n,1,1). acces(m,l,1,1). acces(l,m,1,1). acces(l,k,1,0). acces(k,l,1,1). acces(k,j,1,1). acces(j,k,1,1). acces(j,e,1,1). acces(e,j,1,1). acces(e,i,1,1). acces(i,e,1,1). acces(i,h,1,1). acces(h,i,1,1). % question 1 suit(X,Y,N):-acces(X,Y,N,E). % question 2 suitfct(X,Y,N):-acces(X,Y,N,1). % question 3 dblesensfct(X,Y):-suitfct(X,Y,N),suitfct(Y,X,P). dblesens(X,Y):-suit(X,Y,N),suit(X,Y,P). % question 4 % recursion, principe general: % possible(X,Y):-une_etape(X,Y). % possible(X,Y):-une_etape(X,U),possible(U,Y). erreur(X,Y):-suitfct(X,Y,N). erreur(X,Y):-suitfct(X,U,N),erreur(U,Y). possible_m_ligne(X,Y,N):-suitfct(X,Y,N). possible_m_ligne(X,Y,N):-suitfct(X,U,N),possible_m_ligne(U,Y,N). possible_m_ligne_qcq(X,Y):-possible_m_ligne(X,Y,N). possible(X,Y):-suitfct(X,Y,N). possible(X,Y):-suitfct(X,U,P),possible(U,Y). % pour en pas distinguer les cas o X=U, Y=V % on ajoute possible(X,X). % il n'ets pas ncessaire de demande rque le tramway ne marche pas % sur la station qu'il peut faire pied possible(X,X):-station(X). station(X):-acces(X,U,L,E). % station(X) pour eviter les variables qui n'apparaissent pas en position positives. marche1(X,Y):-possible(X,U),acces(U,V,N,E),possible(V,Y). % sans rajouter possible(X,X) % il faut faire tous les cas marche1bis(X,Y):-possible(X,Y). marche1bis(U,Y):-acces(U,V,N,0),possible(V,Y). marche1bis(X,V):-possible(X,U),acces(U,V,N,0). marche1bis(X,Y):-possible(X,U),acces(U,V,N,0),possible(V,Y).