/* une idée de ce qui était attendu ...
1- Preuves :

Q1

cube(c1).

cube(c2).

tétraèdre(tt).

plusGrand(X , Y) :- aGauche(X , Y).

petit(X) :- cube(X).

petit(X) :- tétraèdre(X).

memeTaille(X , Y) :- petit(X) , petit(Y).

memeTaille(X , Y) :- not plusGrand(X , Y) , not plusGrand(Y , X) .

Q2 :.

strate1 : {petit , cube , tétraèdre , plusGrand , aGauche}

strate2 : {memeTaille}

Q3 :

x (cube(x) <-> x=c1 v x=c2)

x (tétraèdre(x) <-> x=c1)

x (petit(x) <-> cube(x) v tétraèdre(x))

(x , y)( memeTaille(x,y) <-> (petit(x) & petit(y)) v (~ plusGrand(x , y) & ~ plusGrand(y , x)))

(x , y)( plusGrand(x,y) <-> aGauche(x , y))

CWA : (x , y) ( ~ aGauche(x , y))

Et les axiomes d'égalité, la différenciation des constantes , …


2- Prolog :

ldh2ln(0 , _ , []) :- !.

ldh2ln(N , LDH ,[0|LN]) :- not member(dh(N , _) , LDH),

NN is N-1, ldh2ln(NN , LDH , LN).

ldh2ln(N , LDH ,[Note|LN]) :- member(dh(N , Note) , LDH),

NN is N-1, ldh2ln(NN , LDH , LN).

?- eln(étudiant(et1 , i12345 , [dh(1,5) , dh(2,3) , dh(4,2) , dh(8,5) , dh(3,0)]) , élève(E,M,LN)).

E = et1

M = i12345

LN = [0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 2, 0, 3, 5] ;

No


3-AF + DCG :

départ(e1).

final(e4). final(e7).

transition(e1,a , e1). transition(e1,a , e2). transition(e1,b , e1).

transition(e2,b , e3). transition(e3,b , e4).

transition(e1,b , e5). transition(e5,a , e6). transition(e6,b , e7).

reconnaissance(EXPLISTE , TYPE) :-

départ(E), reconnaissance(EXPLISTE , E , TYPE).

reconnaissance([A|EXPLISTE] , E , TYPE) :- transition(E,A , ES) ,

reconnaissance(EXPLISTE , ES , TYPE).

reconnaissance([] , e4 , 'ABB'). reconnaissance([] , e7 , 'BAB').

%-------------------------------

e1(T) --> [a] , e1(T).

e1(T) --> [b] , e1(T).

e1(T) --> [a] , e2(T).

e1(T) --> [b] , e5(T).

e2(T) --> [b] , e3(T).

e3(T) --> [b] , e4(T).

e4('ABB') --> [].

e5(T) --> [a] , e6(T).

e6(T) --> [b] , e7(T).

e7('BAB') --> [].


4 - JAVA :
public class IntegerDataBag implements Subject {
      private Collection intergerBAG = new ArrayList();
      private Collection observers = new ArrayList();

   public void add( Integer i ) { intergerBAG.add( i ); notifyObservers();}
   public Iterator iterator() { return intergerBAG.iterator();}
   public Integer remove( int index ) {
      if( index < intergerBAG.size() ) {Integer i = (Integer) intergerBAG.remove( index );
         notifyObservers(); return i;}
      return null;}
   private void notifyObservers() { Iterator i = observers.iterator();
      while( i.hasNext() ) {Observer o = ( Observer ) i.next(); o.update( this );}
   }}
public class IntegerAdder implements Observer {
   private IntegerDataBag bag;
   public IntegerAdder( IntegerDataBag bag ) {
      this.bag = bag;  bag.addObserver( this );
   }
   public void update( Subject o ) {
      if( o == bag ) {
         System.out.println( "Le contenu de IntegerDataBag a changé." );
         for(int counter = 0, Iterator i = bag.iterator();i.hasNext() ; ){
            Integer integer = ( Integer ) i.next(); counter+=integer.intValue();}
         System.out.println( "la somme des entiers est : " + counter );}
   }
}

import java.util.Iterator;

public class IntegerPrinter implements Observer {

   private IntegerDataBag bag;

   public IntegerPrinter( IntegerDataBag bag ) {
      this.bag = bag; 
      bag.addObserver( this );
   }

   public void update( Subject o ) {
      if( o == bag ) {
         System.out.println( "The contents of the IntegerDataBag have changed." );
         System.out.println( "The new contents of the IntegerDataBag contains:" );
         Iterator i = bag.iterator();
         while( i.hasNext() ) {
            System.out.println( i.next() );
         }
      }
   }

}


/* retour à l'énoncé -->