edges = {(1,'a'):2,
(2, 'a'): 2,
(2, '1'): 3,
(3, '1'): 3}
accepting = [ 3 ]
def fsmsim(string, current, edges, accepting):
if string == ""
return current in accepting
else:
letter = string[0]
if (current, letter) in edges:
destination = edges[(current,letter)]
remaining_string = string[1:]
return fsmsim(remaining_string,destination,edges,accepting)
else:
return False
print fsmsim("aaa111",1,edges,accepting)
import re
def umnums(sentence):
r = r"[0-9]+"
sum = 0
for found in re.findall(r,sentence):
sum = sum + int(found)
return sum
(?:[a-z]+-[a-z]+)|(?:[a-z]+)
def nfsmsim(string, current edges, accepting):
if string == "":
return current in accepting
else:
letter = string[0:1]
if (current, letter) in edges:
remainder = string[1:]
newstates = edges[(current, letter)]
for newstate in newstates:
if nfsmsim(remainder, newstate, edges, accepting):
return True
if current in visited:
return None
elif current in accepting:
return ""
else:
newvisited = visited + [current]
for edge in edges:
if edge[0] == curent:
for newstate in edges[edge]:
foo = nfsmaccepts(nestate, edges, accepting, newvisited)
if foo != None:
return edge[1] + foo
return None