/***************************  Automat.java  ***********************************/

import AlgoTools.IO;

/**  Endlicher Automat mit delta : Zustand x Eingabe -> Zustand. 
 *   Ueberprueft, ob der eingegebene Binaerstring durch 3 teilbar ist.
 *   Syntaktisch korrekte Eingabe wird vorausgesetzt.   
 *   Zeichen '0' und '1' werden umgewandelt in Integer 0 bzw. 1.
 */

public class Automat {

  public static void main (String [] argv) {

    int[][] delta = {{0,1}, {2,0}, {1,2}};             // Ueberfuehrungsfunktion
    
    int z = 0;                                         // Zustand

    char[] zeile=IO.readChars("Bitte Binaerstring: "); // fordere Eingabe an
    
    for (int i=0; i < zeile.length; i++)               // fuer jedes Zeichen
        z = delta[z][zeile[i] - (int) '0'];            // berechne Folgezustand

    if (z == 0)                                        
       IO.println("ist durch 3 teilbar");              // gib Ergebnis bekannt 
    else 
       IO.println("ist nicht durch 3 teilbar");
  }
}
