/**
 * Dieser DFA erkennt Ziffernfolgen, in denen sich irgendwo 
 * James Bond versteckt hat -- in denen also die Folge 007 
 * vorkommt.
 * 
 * Die folgenden Ziffernfolgen sollen beispielsweise akzeptiert 
 * werden:
 * 
 * 12107117700710012021,
 * 007,
 * 0071121727,
 * 0000000071121727,
 * 007007007007,
 * 1121271201212007.
 * 
 * Die folgenden Ziffernfolgen sollen nicht akzeptiert werden:
 * 
 * 12107110710012021,
 * 07,
 * 00,
 * 07112172,
 * 1121271201212000.

 * Um den Automaten und vor allem die Übergangstabelle
 * übersichtlicher zu halten, verwendet er nicht alle Ziffern,
 * sondern lediglich das eingeschränkte Alphabet {0, 1, 2, 7}.
 * 
 * Es empfiehlt sich, den Automaten zunächst zu zeichnen, 
 * die Übergangstabelle auf Papier zu erstellen und dann zu 
 * programmieren.
 * 
 * @author Urs Lautebach
 * @version 2020-Okt
 */

public class KGB_007Sucher extends EndlicherAutomat {
	/* Bei der Implementierung dieser Klasse muss man nur
	 * die Attribute alphabet, uebergaenge und endzustaende
	 * geeignet festlegen -- alles andere macht die 
	 * Vaterklasse.
	 */
	private static final char[] alphabet = new char[] { 
	};
	
	private static final int[][] uebergaenge = new int[][] {
	}; 

	private static final int[] endzustaende = new int[] { 
	};

	/**
	 * Instanziiert einen KGB_007Sucher-DFA. 
	 */
	KGB_007Sucher() {
	    // Aufruf des super-Konstruktors:
		super(alphabet, uebergaenge, endzustaende);
	}

	/**
	 * Die main-Methode erlaubt den Aufruf des
	 * Binaerzahlenpruefers von der Kommandozeile aus mit:
	 * 
	 * java KGB_007Sucher 127007117 1717771021
	 * 
	 * Die Ausgabe lautet dann
	 * 
	 * Akzeptiert: "127007117" enthält 007. 
	 * FEHLER! "1717771021" enthält kein 007!
	 */
	public static void main(String[] args) {
		// Endlichen Automaten instanziieren:
		EndlicherAutomat fahnder = new KGB_007Sucher();

		for(String wort : args) {
			if(fahnder.gehoertZuSprache(wort)) {
				System.out.println("Akzeptiert: \"" + wort + 
						"\" enthält 007.");
			} else {
				System.out.println("FEHLER! \"" + wort + 
						"\" enthält kein 007!");
			}
		}
	}
}

