Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #funcao: encontrar delta adequado
- def userDelta ( estadoAtual, conteudoAtual, delta, qtd_delta):
- i = 0
- while (i < qtd_delta):
- if estadoAtual == int (delta[i][0]) and conteudoAtual == str (delta[i][2]):
- return i
- else:
- i = i + 1
- #funcao: preparar a palavra para imprimir
- def endPalavra (palavra, palavras, i):
- tamanho = len(palavra)
- word = palavra[3:tamanho-3]
- palavras.insert(i, word)
- return word
- #listas
- delta = list ()
- palavras = list ()
- palavra = list ()
- #dicionario
- dicionario = eval (input())
- inicial = dicionario['inicial']
- aceita = dicionario['aceita']
- rejeita = dicionario['rejeita']
- qtd_delta = len(dicionario['delta'])
- for i in range (0, qtd_delta, 1):
- delta.append(dicionario['delta'][i])
- #inteiro
- inteiro = int (input ())
- #palavras
- for i in range ( 0, inteiro, 1):
- palavras.append(input())
- #MAQUINA DE TURING - computando...
- for i in range (0, inteiro, 1):
- for j in range (3):
- palavra.append('b')
- for j in range (0, len(palavras[i]), 1):
- palavra.append(palavras[i][j])
- for j in range (3):
- palavra.append('b')
- indice = 3
- estadoAtual = int (inicial)
- conteudoAtual = str (palavra [indice])
- estadoFinal = False
- while (estadoFinal != True):
- d = userDelta(estadoAtual, conteudoAtual, delta, qtd_delta)
- novoEstado = delta[d][1]
- novoConteudo = str (delta[d][3])
- movimento = delta[d][4]
- palavra.insert(indice, novoConteudo)
- estadoAtual = novoEstado
- conteudoAtual = novoConteudo
- if estadoAtual == aceita:
- word = endPalavra (palavra, palavras, i)
- print(word, 'ACEITA')
- estadoFinal == True
- if estadoAtual == rejeita:
- word = endPalavra (palavra, palavras, i)
- print(word, 'REJEITA' )
- estadoFinal == True
- else:
- estadoFinal = False
- if movimento == 'D':
- indice = indice + 1
- if movimento == 'E':
- indice = indice - 1
- if movimento == 'P':
- indice = indice
Add Comment
Please, Sign In to add comment