const deterministicFiniteAutomaton = (commands, state = 's0', acceptState = 's0') => {
const stateMap = {
's0': {
0: 's0',
1: 's1',
},
's1': {
0: 's2',
1: 's0',
},
's2': {
1: 's2',
0: 's1',
}
};
if (commands.length === 0) {
return acceptState === state;
}
return deterministicFiniteAutomaton(commands.slice(1), stateMap[state][commands.shift()], acceptState);
};
console.log(deterministicFiniteAutomaton([1, 0, 0, 1]));