Convert from table to function:
| > | # Convert a DFA where the transition function is a "table" to
# a DFA where the transition function is a function (older version) # # NOTE: If we use functions, it may look nice and works well for # DFAs. But it posts several problems for NFAs convertDFA:=proc(a_dfa,listOrSet) local i,dfa,delta,numberOfTransition; dfa:=[op(a_dfa)]; if member(listOrSet,{"list","List","LIST"}) then dfa[1]:=[op(dfa[1])]; dfa[2]:=[op(dfa[2])]; dfa[5]:=[op(dfa[5])]; elif member(listOrSet,{"set","Set","SET"}) then dfa[1]:={op(dfa[1])}; dfa[2]:={op(dfa[2])}; dfa[5]:={op(dfa[5])}; fi; numberOfTransition:=nops(op(dfa[3])): if (numberOfTransition=0) then RETURN([dfa[1],dfa[2],op(delta),dfa[4],dfa[5]]): fi: for i from 1 to numberOfTransition do delta(op(1,op(i,op(dfa[3])))):=op(2,op(i,op(dfa[3]))): od: RETURN([dfa[1],dfa[2],op(delta),dfa[4],dfa[5]]): end: |
| > |