Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Uncategorized category for English to Braille Translator by TovarischZhukov
def convert(code):
bin_code = bin(code)[2:].zfill(6)[::-1]
return [[int(bin_code[j + i * 3]) for i in range(2)] for j in range(3)]
LETTERS_NUMBERS = list(map(convert,
[1, 3, 9, 25, 17, 11, 27, 19, 10, 26,
5, 7, 13, 29, 21, 15, 31, 23, 14, 30,
37, 39, 62, 45, 61, 53, 47, 63, 55, 46, 26]))
CAPITAL_FORMAT = convert(32)
NUMBER_FORMAT = convert(60)
PUNCTUATION = {",": convert(2), "-": convert(18), "?": convert(38),
"!": convert(22), ".": convert(50), "_": convert(36)," ":convert(0)}
WHITESPACE = convert(0)
def braille_page(text):
retval=[]
r=[]
for val in text:
if val.isdigit():
retval.append(NUMBER_FORMAT)
retval.append(LETTERS_NUMBERS[int(val)-1 if val != "0" else 9])
elif val.isalpha():
if val.isupper():
retval.append(CAPITAL_FORMAT)
retval.append(LETTERS_NUMBERS[ord(val.lower())-97])
else:
retval.append(PUNCTUATION[val])
lst_data=retval[:10]
num=0
while lst_data:
for i in range(3):
r.append([])
for el in lst_data:
for j in range(2):
r[-1].append(el[i][j])
r[-1].append(0)
r[-1]=r[-1][:-1]
ln = len(lst_data)
if ln<10 and len(retval)>10:
r[-1]+=[0]*(10-ln)*3
r[-2]+=[0]*(10-ln)*3
r[-3]+=[0]*(10-ln)*3
r.append([0]*29)
num+=len(lst_data)
lst_data= retval[num:num+10]
return r[:-1]
Feb. 13, 2016