Advertisement
bebesurf

Pour Beuhtül la nulle

Oct 1st, 2018
383
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 3.38 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.HashMap;
  3.  
  4. /**
  5.  *
  6.  */
  7. public class NierAuxTomates {
  8.  
  9.     /*On crée l'état initial, final, courrant et existants*/
  10.     private State initialState;
  11.     private ArrayList<State> finalStates;
  12.     private State currentState;
  13.     private ArrayList<State> existingStates;
  14.     private String[] resultat;
  15.  
  16.     /**
  17.      * Constructor of NierAuxTomates, it initialize the initial and final States, and the existing ones.
  18.      *
  19.      * @param initialState
  20.      * @param finalState
  21.      * @param existingStates
  22.      */
  23.     public NierAuxTomates(State initialState, ArrayList<State> finalState, ArrayList<State> existingStates) {
  24.         this.initialState = initialState;
  25.         this.finalStates = finalState;
  26.         this.existingStates = existingStates;
  27.     }
  28.  
  29.     /**
  30.      * Add a possible transition for the automata
  31.      * Possible transitions are actually written into the HashMap of the States.
  32.      *
  33.      * @param st1
  34.      * @param val
  35.      * @param st2
  36.      */
  37.     public void addTransition(State st1, Label val, State st2) {
  38.         int indexTmp = existingStates.indexOf(st1);
  39.         State stTmp = existingStates.get(indexTmp);
  40.         stTmp.addTransition(val, st2);
  41.     }
  42.  
  43.     /**
  44.      * Method to add an existing state in the automata
  45.      *
  46.      * @param st1
  47.      */
  48.     public void addState(State st1) {
  49.         existingStates.add(st1);
  50.     }
  51.  
  52.     /**
  53.      * Methods need to set and get specified values
  54.      */
  55.     public State getInitialState() {
  56.         return initialState;
  57.     }
  58.  
  59.     public void setInitialState(State initialState) {
  60.         this.initialState = initialState;
  61.     }
  62.  
  63.     public ArrayList<State> getFinalState() {
  64.         return finalStates;
  65.     }
  66.  
  67.     public void addFinalState(State finalState) {
  68.         this.finalStates.add(finalState);
  69.     }
  70.  
  71.     public State getCurrentState() {
  72.         return currentState;
  73.     }
  74.  
  75.     public void setCurrentState(State currentState) {
  76.         this.currentState = currentState;
  77.     }
  78.  
  79.     public ArrayList<State> giveExistingStates() {
  80.         return existingStates;
  81.     }
  82.  
  83.     private boolean inFinalState(State currentState){
  84.         for (int i = 0; i < finalStates.size(); i++) {
  85.             if (currentState == finalStates.get(i)) return true;
  86.         }
  87.         return false;
  88.     }
  89.  
  90.     /*Il faut que l'aux tomates avance à chaque fois qu'il lit une valeur, et qu'il regarde s'il peut aller quelque
  91.     part avec la valeur qu'il lit depuis l'état actuel.
  92.     */
  93.  
  94.     /**
  95.      * The automate read an array of labels which is the actual values the user want to test with the automata
  96.      * This method advance in the graph thanks to the given values and the HashMap contained in the current State
  97.      *
  98.      * @param values
  99.      * @return
  100.      */
  101.     public String[] execute(Label[] values) {
  102.         resultat = new String[10];
  103.         Label labTmp;
  104.         int it = 0;
  105.         currentState = initialState;
  106.         while (!(inFinalState(currentState)) && existingStates.contains(currentState)) {
  107.             labTmp = values[it];
  108.             currentState = currentState.giveNextState(labTmp);
  109.             resultat[it] = labTmp.getValue();
  110.             it++;
  111.         }
  112.         if (inFinalState(currentState))
  113.             return resultat;
  114.  
  115.         else {
  116.             resultat[0] = null;
  117.             return resultat;
  118.         }
  119.     }
  120.  
  121. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement