48
правок
Изменения
→Кодирование
# Повторим пункт (3) до конца входного потока.
# Выберем любое число из получившегося отрезка, которое и будет результатом арифметического кодирования.
== Псевдокод ==
<tex>s</tex> {{---}} текст, подаваемый на вход
<tex>left</tex>, <tex>right</tex> {{---}} границы отрезка, содержащего возможный результат арифметического кодирования
<tex>segment[i].left</tex>, <tex>segment[i].right</tex> {{---}} границы подотрезка отрезка <tex>[0; 1)</tex>, соответствующего символу <tex>i</tex>
'''double''' ArithmeticCoding (s: '''string'''):
left = 0
right = 1
'''for''' i = 0 '''to''' length(s)-1
newLeft = left + (right - left) * segment[symb].left
left = newLeft