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