Изменения

Перейти к: навигация, поиск

Арифметическое кодирование

112 байт добавлено, 15:24, 17 июня 2016
Оформление первого псевдокода в виде функции
# Повторим пункт (3) до конца входного потока.
# Выберем любое число из получившегося отрезка, которое и будет результатом арифметического кодирования.
'''double''' ArithmeticCoding (s: string): left = 0 right = 1 '''for''' i = 0 '''whileto''' !eoflength(s)-1 '''read'''(symbs[i]) newRight = left + (right - left) * segment[symb].right <span style="color:green"> // segment[symb] — подотрезок отрезка [0; 1), соответствующий символу symb </span> newLeft = left + (right - left) * segment[symb].left left = newLeft right = newRight ans = '''return''' (left + right) / 2
=== Декодирование ===
<code>
'''do'''
'''for''' i = 1 '''to ''' n
'''if''' code >= segment[i].left '''and''' code < segment[i].right
write(segment[i].character)
48
правок

Навигация