This is a throwaway piece of code, so it’s probably buggy but what the heck!
#!/usr/bin/python # -*- coding: utf-8 -*- import sys zero = '○' one = '●' numbers = [] def int2bin(n, count=5): """returns the binary of integer n, using count number of digits""" return "".join([ zero if ((n >> y) & 1) == 0 else one for y in range(count-1, -1, -1)]) def write(code): print numbers def output(newstate, curstate, code): figs = 27 ltrs = 31 if newstate == 0 and curstate == 1: write(ltrs) elif newstate == 1 and curstate == 0: write(figs) write(code) return newstate def translate(input): global numbers numbers = map(int2bin,range(0,32)) baudot_letters = '@E@A SIU@DRJNFCKTZLWHYPQOBG@MXV@' baudot_symbols = '@3@- @87@$4\',!:(5")2@6019?&@./;@' cr = 8 lf = 2 sp = 4 state = 0 for c in input.upper(): if c == '@': continue if c == ' ': output(0,0,sp) elif c == '\n': output(0,0,cr) output(0,0,lf) else: ix = baudot_letters.find(c) if ix != -1: state = output(0, state, ix) else: ix = baudot_symbols.find(c) if ix != -1: state = output(1, state, ix) if __name__ == '__main__': for arg in sys.argv[1:]: translate(arg)
In case you're wondering, the Baudot code was invented in 1870 by Émile Baudot and later became the foundation of the international telex alphabets. See http://en.wikipedia.org/wiki/Baudot_code.
The original telex machines were electro-mechanical beasts which used this 5-bit code for wire transmission. Telex machines could encode text to punched tape for later sending. They could also print incoming telex transmissions to tape as well as paper. I remember seeing in a post bureau in Pakistan a journalist receiving a message on one telex machine and feeding the output spool of tape into another as it arrived. An early version of message forwarding!
Example output of the above:
johncc@liberator:~$ python baudot.py 'Hello world!'
●○●○○
○○○○●
●○○●○
●○○●○
●●○○○
○○●○○
●○○●●
●●○○○
○●○●○
●○○●○
○●○○●
●●○●●
○●●○●