I wrote a script to model the behaviour of Deterministic Finite Automata,
defined as the DFA, M = (Q,L,delta,s,F), where Q is the set of states, L is the
alphabet, delta is the transition function, delta: Q x L -> Q, s is the start
state, F is the set of all accept/final states.
There is a verb, run, which takes a string and returns 1 if the string is
accepted by the machine, 0 if not.
M =: 0 1 2 ; 'ab' ; (1 2 ; 0 1 ; 2 0) ; 0 ; 1 2 NB. M=(Q,L,delta,s,F)
Q =: >0{M NB. states
L =: >1{M NB. language
delta =: >2{M NB. transition function
s =: >3{M NB. start state
F =: >4{M NB. final states
run =: 3 :0 NB. run y tests if y is
accepted
q =. s
while. 0<#y do.
q =. (L i.{.y) { >q{delta
y =. }.y
end.
q e. F
)
run 'a'
1
run 'aa'
0
run 'aaa'
1
run 'abbbbbbbbbbbaabbbbb'
1
run 'abbbbbbbbbbbaabbbbba'
0
I was wondering if anyone knows if it is possible to check if the machine
accepts a regular expression (e.g. ab*(aab*)* )?
----------------------------------------------------------------------
For information about J forums see http://www.jsoftware.com/forums.htm