Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sys
- data, inputArrays, transitionFunction = [], [], {}
- # Get all shit from input file into nice array
- for line in sys.stdin :
- data.append(line.rstrip())
- # Gimme initial state
- initialState = data[4]
- # Gimme my transition function
- for transition in data[5:] :
- transitionFunction[transition.split('->')[0]] = transition.split('->')[1].split(',')
- # Put all input strings into nice list
- for array in data[0].split('|') :
- inputArrays.append(array.split(','))
- # eNKA
- # ss = start state; ic = input character; fn = transition function;
- def eNKA(ss, ic, fn) :
- if not ss or not ic or ((ss == '#') and not ic) : return []
- if (ic == '$') and (ss + ',$') in fn : return fn[ss+',$']
- elif ic == '$' : return []
- if (ss+','+ic) in fn : return fn[ss+','+ic]
- # Automaton
- # ss = start states; ir = input array; fn = transition function;
- def automaton(ss, ir, fn) :
- if not ir : return ''
- states, estates, returnString, other = [], [], '', ''
- for s in ss :
- states += eNKA(s, ir[0], fn)
- if states :
- for state in states :
- estates += eNKA(state, '$', fn)
- returnString = ','.join(list(set(states + estates)))
- if estates : print(str(estates)+' : '+str(ir[1:]))
- #if estates : other = automaton(estates, ir[1:], fn)
- return returnString + ('|'+other if other else '')
- # print(str(inputArrays[0]))
- print(automaton(['stanje1'], inputArrays[0], transitionFunction))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement