Máquina AFD

by Klawztro

JavaScript

var q0 = {},
    qf = {};

q0.a = qf;
q0.b = q0;
qf.a = qf;
qf.b = qf;
qf.final = true;

function iterate(word,late_state) {
    var letter = word.shift(),
        atual_state = late_state[letter],
        valid_word = false;

    if (typeof atual_state === 'undefined') {     //Machine lock.
        console.log('machine locked');
        
        return false;
    }

    if (word.length === 0 && atual_state.final === true) {
        return true;
    }
    
    valid_word = iterate(word,atual_state);
    return valid_word;
}


function strToArray(word) {
    var letter,
        size = word.length,
        _array = [],
        cont = 0;
    
    for (; cont < size; cont++) {
        _array.push(word.charAt(cont));
    }    
    return _array;
}


var palavra = strToArray('bbbbbbb');
alert(iterate(palavra,q0));