{{{id=1| string = 'WORT' num = map(lambda x: ord(x) - 64,string) print num /// [23, 15, 18, 20] }}} {{{id=2| def digit(string): return map(lambda x: ord(x) - 64, string) /// }}} {{{id=3| digit('WORT') /// [23, 15, 18, 20] }}} {{{id=4| def letters(num_list): return ''.join(chr(i+64) for i in num_list) /// }}} {{{id=5| num = digit('WORT'); print num letters(num) /// [23, 15, 18, 20] 'WORT' }}} {{{id=6| def reed_solomon(wort): liste = digit(wort) #a,b = var('a,b') a1 = (-sum( [ (k+2)*liste[k] for k in range(len(liste)) ] ))%31 a0 = (-sum( [a1]+liste ))%31 return letters([a0,a1] + liste) /// }}} {{{id=7| reed_solomon('WORT') /// 'APWORT' }}} {{{id=8| string = 'APWIRT' liste = digit(string); liste /// [1, 16, 23, 9, 18, 20] }}} {{{id=9| e = sum(liste)%31; e /// 25 }}} {{{id=10| s = sum( [ k*liste[k] for k in range(len(liste)) ] )%31;s /// 13 }}} {{{id=11| x = s*power_mod(e,-1,31)%31; x /// 3 }}} {{{id=21| liste[x] = (liste[x]-e)%31;liste /// }}} {{{id=13| def reed_solomon_inv(wort): liste = digit(wort) e = sum( liste )%31 if e != 0: s = sum( [ k*liste[k] for k in range(len(liste)) ] )%31 x = s*power_mod(e,-1,31)%31 liste[x] = (liste[x] - e)%31 liste = liste[2:] return letters( liste ) /// }}} {{{id=14| reed_solomon_inv('APWIRT') /// 'WORT' }}} {{{id=15| code = reed_solomon('MATHEMATIK'); code /// 'JMMATHEMATIK' }}} {{{id=16| code = code[:6]+'S'+code[7:];code /// 'JMMATHSMATIK' }}} {{{id=17| reed_solomon_inv( code ) /// 'MATHEMATIK' }}} {{{id=18| code = code[:-1]+'J';code /// 'JMMATHSMATIJ' }}} {{{id=19| reed_solomon_inv( code ) /// 'MATHSMSTIJ' }}} {{{id=20| /// }}}