def main(): if len(sys.argv) < 2: print("Uso: python main.py arquivo.txt conteudo_fita1 [conteudo_fita2... ]") return try: arquivo = open(sys.argv[1], 'r') except IOError: print("Erro ao abrir o arquivo") return entrada = arquivo.readlines(); alfabeto_entrada = entrada[0].replace('\n','').replace('\r','').split(' ') alfabeto_fita = entrada[1].replace('\n','').replace('\r','').split(' ') branco = str(entrada[2].replace('\n','').replace('\r','')) estados = entrada[3].replace('\n','').replace('\r','').split(' ') inicial = str(entrada[4].replace('\n','').replace('\r','')) finais = entrada[5].replace('\n','').replace('\r','').split(' ') fitas = entrada[6].replace('\n','').replace('\r','') transicoes = [] for i in range(7,len(entrada)): transicoes.append(entrada[i].replace('\n', '').replace('\r','').split(' ')) conteudo = [] for i in range(2, int(fitas)+2): c = [] if i >= len(sys.argv): c = ['B'] conteudo.append(c) continue for j in range(len(sys.argv[i])): c.append(str(sys.argv[i][j])) conteudo.append(c) TM = tm.TuringMachine( alfabeto_entrada = alfabeto_entrada, alfabeto_fita = alfabeto_fita, simb_branco = branco, estados = estados, estado_inicial = inicial, estados_finais = finais, fitas = int(fitas), transicoes = transicoes, conteudo = conteudo ) TM.executar()
def rand_tm(number_of_states, tape_length): return tm.TuringMachine( number_of_states, [rand_state(number_of_states) for i in range(number_of_states)], random.randint(0, 2**tape_length))
import numpy as np import turing_machine as tm input = np.array([[0, 1, 0], [1, 0, 1], [0, 1, 0]]) output = np.array([[0, 2, 0], [2, 0, 2], [0, 2, 0]]) if __name__ == "__main__": # number of TMs <<<<<<< HEAD n = 50 # create n TMs alans = [tm.TuringMachine(None, 5, 5, 2) for _ in range(n)] # try to solve this for 10000 steps max step = 0 while step < 100000 : ======= n = 15 # number to retain from each population n_parents = 5 add_random = 5 # parameter max_steps = 10000 step_found = []
def main(): """ main function """ if len(sys.argv) < 2: print "modo de usar: python main.py arquivo.txt conteudo_fita1 [conteudo_fita2...]" return # Abrir arquivo try: arquivo = open(sys.argv[1], 'r') except IOError: print "Erro ao abrir o arquivo" return # Ler as linhas do arquivo (linha 1 a 7) # Linha 1: alfabeto de entrada # Linha 2: alfabeto da fita # Linha 3: simbolo que representa o espaco em branco (padrao: B) # Lista 4: conjunto de estados # Linha 5: estado inicial # Linha 6: conjunto de estados finais # Linha 7: quantidade de fitas #Das linhas 42 a 55 e feita a leitura do arquivo, conforme descrito entre as linhas 32 e 39. elements = [] content = arquivo.readline() #lendo linhas 1 a 7 e associando a lista 'content' for i in range(7): #Associo o que peguei até a linha 7 à lista de 'elements'. elements.append(util.remove_escape_char(content)) content = arquivo.readline() alfabeto_entrada = elements[0].split(' ') alfabeto_fita = elements[1].split(' ') branco = elements[2] estados = elements[3].split(' ') estado_inicial = elements[4] estados_finais = elements[5].split(' ') qtde_fitas = elements[6] #A partir da linha 58 ate a linha 64, e feita a associacao, conforme a quantidade de fitas lidas, do conteúdo delas, ficando isso armazenado na lista conteudo_fita. conteudo_fitas = [] try: for i in range(int(qtde_fitas)): conteudo_fitas.append(str(sys.argv[2 + i])) except IndexError: print "modo de usar: python main.py arquivo.txt conteudo_fita1 [conteudo_fita2...]" return 0 # mostrar conteudo das fitas for i in range(int(qtde_fitas)): print "conteudo da fita " + str(i+1) +":", conteudo_fitas[i] # A partir da linha 71 em diante, e feita a leitura das transicoes em relacao a linha 8 em diante do arquivo fornecido. transicoes = [] while content: transicoes.append(util.remove_escape_char(content)) content = arquivo.readline() # tratar transicoes transicoes = util.format_transicoes(transicoes, qtde_fitas) # instanciar objeto tm tm = TM.TuringMachine( alfabeto_entrada=alfabeto_entrada, estados=estados, estado_inicial=estado_inicial, estados_finais=estados_finais, qtde_fitas=qtde_fitas, fita=alfabeto_fita, simbolo_branco=branco, transicoes = transicoes, conteudo_fitas = conteudo_fitas ) tm.executar() tm.resultado()
import turing_machine as tm import random does_nothing = tm.TuringMachine( 1, [[False, True, 0, False, True, 1, True, True, 1]], random.randint(0, 2**16)) inverter = tm.TuringMachine(1, [[False, True, 0, True, True, 1, False, True, 1]], random.randint(0, 2**16)) false_tm = tm.TuringMachine(1, [[False, True, 0, False, True, 1, False, True, 1]], random.randint(0, 2**16)) true_tm = tm.TuringMachine(1, [[True, True, 0, True, True, 1, True, True, 1]], random.randint(0, 2**16)) # Broken because my TM specification doesn't allow writing before the beginning of the tape. wolfram_smith = tm.TuringMachine( 2, [[False, True, 2, True, False, 1, False, False, 1], [True, False, 1, True, True, 2, None, True, 1]], random.randint(0, 2**16)) # wolfram_smith.tape = [None]*16 + wolfram_smith.tape # wolfram_smith.head = 20 neat = tm.TuringMachine(12, [[False, False, 4, False, True, 2, True, False, 9], [True, False, 12, False, False, 0, True, True, 7], [True, False, 6, False, False, 12, False, False, 1], [True, True, 7, True, False, 11, False, False, 6], [False, True, 11, False, False, 5, False, True, 5], [False, True, 4, False, False, 12, True, True, 10], [False, True, 8, True, True, 3, True, True, 11],