Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Importando a biblioteca sys para uso de funcoes do sistema
- import sys
- # Definindo uma funcao invertBit que ira fazer a invercao na mutacao
- # parametros:
- # pos - posicao da mutacao
- # array - vetor com a sequencia de bits
- # retorno:
- # array - vetor com a sequencia de bits com a mutacao
- def invertBit(pos, array):
- # Se na posicao do array o valor for 1
- if array[pos] == '1':
- # Uso uma lista auxiliar (cada posicao do meu array vai ser
- # um valor da minha lista)
- aux = list(array)
- # Inverto o valor naquela posicao
- aux[pos] = '0'
- # Remonto o meu array a partir da lista auxiliar
- array = "".join(aux)
- # Se na posicao do array o valor for 0
- elif array[pos] == '0':
- aux = list(array)
- aux[pos] = '1'
- array = "".join(aux)
- # Retorno meu vetor com a mutacao
- return array
- # Funcao principal de execucao
- def main():
- # Leio do usuarios os dados para o cruzamento e a mutacao
- print('Indique qual a posicao do ponto de cruzamento: ')
- ptCruzamento = input()
- print('Digite a primeira sequencia: ')
- primeiraSeq = raw_input()
- print('Digite a segunda sequencia: ')
- segundaSeq = raw_input()
- print('Digite a posicao da mutacao: ')
- posMut = input()
- # Decremento o valor lido pois a maquina trabalha com o indice de 0 ate n
- # e nao de 1 ate n
- posMut -= 1
- # Verifico se do comeco do vetor ate a posicao do cruzamento as
- # sequencias sao iguais
- if primeiraSeq[0:ptCruzamento] == segundaSeq[0:ptCruzamento]:
- # Caso sejam iguais eu faco o cruzamento, ou seja, comeco da primeira
- # sequencia mais o final da segunda sequencia e comeco da segunda
- # sequencia mais o final da primeira sequencia
- primeiroCruzamento = primeiraSeq[0:ptCruzamento] + segundaSeq[ptCruzamento:(len(segundaSeq))]
- segundoCruzamento = segundaSeq[0:ptCruzamento] + primeiraSeq[ptCruzamento:(len(primeiraSeq))]
- else:
- # Caso nao seja, imprime uma mensagem de erro no console e no sistema
- # fechando a execucao
- print('As sequencias nao sao iguais ate o ponto de cruzamento')
- sys.exit("Erro: sequencia nao satisfatoria")
- # Imprimo o resultado sem a mutacao
- print('Resultado do primeiro cruzamento (sem a mutacao): ' + primeiroCruzamento)
- print('Resultado do segundo cruzamento (sem a mutacao): ' + segundoCruzamento)
- # Faco a mutacao invertendo os bits
- primeiroCruzamento = invertBit(posMut, primeiroCruzamento)
- segundoCruzamento = invertBit(posMut, segundoCruzamento)
- # Imprimo o resultado com a mutacao
- print('Resultado do primeiro cruzamento (com a mutacao): ' + primeiroCruzamento)
- print('Resultado do segundo cruzamento (com a mutacao): ' + segundoCruzamento)
- # Define na execucao do script a execucao da funcao main
- if __name__ == '__main__':
- main()
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement