Código Morse em Python

Recentemente, em seu twitter, o escritor Eduardo Spohr escreveu duas mensagens em código Morse. O que me levou a escrever uma classe em Python que codificasse e decodificasse este código.

O código Morse é um sistema binário desenvolvido em 1835 por Samuel Finley Breese Morse para representar as letras do alfabeto bem como os numerais. Utiliza sons curtos e longos ou pontos e traços para transmissão de mensagens.

Código Morse Internacional

CÓDIGO

O código em Python foi implementado conforme a tabela acima. O código morse para ser decodificado deve ter espaços em brancos para separar cada código. Código salvo no arquivo morse.py.

class Morse(object):
    def __init__(self):
        self.morse_code = {
            'A': '.-', 'B': '-...',
            'C': '-.-.', 'D': '-..',
            'E': '.', 'F': '..-.',
            'G': '--.', 'H': '....',
            'I': '..', 'J': '.---',
            'K': '-.-', 'L': '.-..',
            'M': '--', 'N': '-.',
            'O': '---', 'P': '.--.',
            'Q': '--.-', 'R': '.-.',
            'S': '...', 'T': '-',
            'U': '..-', 'V': '...-',
            'W': '.--', 'X': '-..-',
            'Y': '-.--', 'Z': '--..',
            '0': '-----', '1': '.----',
            '2': '..---', '3': '...--',
            '4': '....-', '5': '.....',
            '6': '-....', '7': '--...',
            '8': '---..', '9': '----.'
        }

    def decode(self, morsecode):
        ''' Decodifica codigo morse '''
        code = morsecode.split(' ')
        text = ''
        for item in code:
            for key, value in self.morse_code.iteritems():
                if item == value:
                    text += key
                    break
        return text

    def encode(self, plaintext):
        ''' Codifica em codigo morse '''
        code = ''
        for char in plaintext.upper():
            if char in self.morse_code.keys():
                code += self.morse_code[char] + ' '
        return code

TESTE

Com o módulo abaixo podemos testar a classe Morse.

# -*- coding: utf-8 -*-
from morse import Morse
import sys

versao = sys.version_info[0]

if versao == 2:
	leitura = raw_input
elif versao == 3:
	leitura = input

txt_in = leitura('Texto a ser codificado: ')

morse = Morse()
codigo = morse.encode(txt_in)
print
print('Codigo Morse: {0}'.format(codigo))
print(' Texto plano: {0}'.format(morse.decode(codigo)))

Executando, temos como saída:

Texto a ser codificado: a reuniao sera as 10h

Codigo Morse: .- .-. . ..- -. .. .- --- ... . .-. .- .- ... .---- ----- ....
 Texto plano: AREUNIAOSERAAS10H

Fontes:
https://en.wikipedia.org/wiki/Morse_code

Sobre Fábio Medeiros

Meu nome é Fábio Medeiros. Cearense de nascença e com muito orgulho (daí o nome do blog, uma referência à minha terra). Sou formado em Tecnologia em Telemática, pelo CEFET-CE. Escrevi alguns artigos sobre programação JavaME e dispositivos portáteis (PDA) para a revista WebMobile.
Esse post foi publicado em Criptografia e marcado , . Guardar link permanente.

Deixe uma resposta

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair / Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair / Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair / Alterar )

Foto do Google+

Você está comentando utilizando sua conta Google+. Sair / Alterar )

Conectando a %s