001    package de.hska.java.aufgaben.felder;
002    
003    /**
004     * Ein deterministischer endlicher Automat.
005     * <p>
006     *   <a href="http://www.home.hs-karlsruhe.de/~pach0003/informatik_1/aufgaben/felder.html#automat">Zurück zum Aufgabentext</a>
007     * </p>
008     * 
009     * @author Christian Pape
010     *
011     */
012    public class EndlicherAutomat implements Automat {
013    
014            private int [][] uebergaenge;
015            
016            public EndlicherAutomat(int [][] uebergaenge) {
017                    this.uebergaenge = uebergaenge;
018            }
019            
020            public boolean akzeptiert(char [] eingabe) {
021                    int zustand = 1;
022                    
023                    for (char c : eingabe) {
024                            zustand = uebergaenge[zustand][c];
025                            if (zustand == 0) {
026                                    return false;
027                            }
028                    }
029                    
030                    return zustand == uebergaenge.length - 1;
031            }
032    
033    }