Untitled
unknown
plain_text
a year ago
2.2 kB
4
Indexable
# an array with letters from a to z a_z = list(map(chr, range(ord('a'), ord('z')+1))) accepting_states = {"q11", "q12"} initial_state = "q1" def f (array): return lambda char: char in array transitions = { 'q1': {f(a_z) : 'q2'} } def transition(state, char): if not state in transitions: return 'q0' for func, next_state in transitions[state].items(): if func(char): return next_state return 'q0' def process_string(input_string): # Print the starting state print("Start State:", initial_state) current_state = initial_state for char in input_string: # Print the character and current state # print(f"Character: {char}, Current State: {current_state}") # Update the current state based on the transition function current_state = transition(current_state, char) print(f"Character: {char}, Reached Current State: {current_state}") print ("End of string.") # Check if the final state is an accepting state if current_state in accepting_states: print("String Accepted") else: print(f"{current_state} is not a final state. String Rejected") def main(): print("DFA for Email Addresses") lis = ["z@c.com", "ba@ba.co", "cdef@.com" , "webcom.a.bc.d.efg@z.ai.cs.stanford.com" , "foo@moo.com..com", "abqe.@book.com" , "comp@comp.com." , "redblue@orange..com" , "random@com" , "pore@a.com.com" , "www@com.comp", "wwwc@com.co" , ".two@four.com" , "food@fo.com®", "comp@company.co.com" , "computer@company.com.co" , "@abcde.com" , "people.dog.cat@.com", "cable..cord@fort.com" ] lis=["a"] for item in lis: print(f"String: {item}") process_string(item) while False: user_input = input("Do you want to enter an email address? (y/n): ").strip().lower() if user_input == "n": break elif user_input == "y": input_string = input("Enter an email address: ").strip() print("Input Email Address:", input_string) process_string(input_string) else: print("Invalid input. Please enter 'y' or 'n'.") if __name__ == "__main__": main()
Editor is loading...