コード例 #1
0
        public static bool Multiplos2(string cadena)
        {
            var automata = new Automata();

            var Q  = new Estado(false);
            var _1 = new Estado(false);
            var _0 = new Estado(true);

            Q.AgregarTransicion('1', _1);
            Q.AgregarTransicion('0', _0);
            _1.AgregarTransicion('0', _0);
            _0.AgregarTransicion('1', _1);

            automata.AgregarEstados(Q, _1, _0);
            automata.SetInicial(Q);

            return(automata.Evaluar(cadena));
        }
コード例 #2
0
        public static bool AB_ABA(string cadena)
        {
            var automata = new Automata();

            var Q  = new Estado(true);
            var Z  = new Estado(false);
            var A  = new Estado(false);
            var B  = new Estado(true);
            var A2 = new Estado(true);

            Q.AgregarTransicion('a', A);
            Q.AgregarTransicion('b', Z);
            A.AgregarTransicion('a', Z);
            A.AgregarTransicion('b', B);
            B.AgregarTransicion('a', A2);
            B.AgregarTransicion('b', Z);
            A2.AgregarTransicion('a', A);
            A2.AgregarTransicion('b', B);

            automata.AgregarEstados(Q, Z, A, B, A2);
            automata.SetInicial(Q);

            return(automata.Evaluar(cadena));
        }