Info Guide #8:
В схеме "цвет на точку" в цепи 7,внизу,
пропущен резистор.
Вот как должно быть:
eff7bit0 ───>├──┐
c30 in (8/D15)─>├─┼─> c30 out (1/D14 only)
▒
│
┴ GND
Ошибку нашёл ZET-9, за что ему большое
спасибо.
Info Guide #7:
Ошибка в описании способа урезания де─
рева до 15 ярусов. Было написано:
"Ищем самую длинную длину,которая вооб─
ще есть. Допустим,что такой длине (назовём
её N+1 ) соответствует C символов. Это не─
хорошо; эти символы надо опустить на уро─
вень (ярус) ниже (на N-й ) за счёт подня─
тия символов длиной N-1 (поднимаем тоже на
N-й уровень).На каждые 2 опущенных символа
длиной N+1 (а их число C, козе понятно,
чётно) приходится 1 поднятый символ длиной
N-1. Это было бы прекрасно,если бы символы
длиной N-1 всегда можно было найти. Однако
их иногда не хватает (может и вообще не
быть), поэтому приходится довольствоваться
поднятием символов длиной N-2 (поднимаем
на N-1-й уровень):на каждый такой поднятый
символ приходится 4 опущенных символа дли─
ны N+1. Если нет N-2, берём N-3 - на каж─
дый такой поднятый приходится 8 опущенных
N+1. И так далее.В конце концов,после нес─
кольких операций по опусканию символов ма─
ксимальной длины, длин >15 не остаётся."
Однако иногда они всё-таки остаются.
Чтобы избежать этого,следует делать не как
написано в IG#7, а вот так:
1. Находим N+1 = самый глубокий ярус,
имеющийся в дереве.
2. Находим первый непустой ярус X є N-1.
3. Убираем в нём 1 литерал, взамен
добавляем 2 литерала на ярусе X+1 (т.е.
вместо литерала делаем "разветвление" в
ярусе X ).
4. Добавляем 1 литерал на ярусе N, но
убираем 2 литерала на ярусе N+1 (т.е.
заменяем "разветвление" в ярусе N на
литерал).
Этот процесс следует производить до тех
пор, пока N+1 не станет є 15.
Исправлено в ZXRar и mRIP.
Info Guide #7:
Степень сжатия простого Lazy Evaluation
можно улучшить (несколько замедлив) следу─
ющим образом.
В IG#7 написано:
"Суть стратегии в том,что,найдя ссылку,
мы её не сразу вносим в поток, а сперва
пробуем посмотреть, что получится, если мы
закодируем текущий символ как символ, а
ссылку будем искать со следующего байта.
Сравнивая две найденные оптимальные ссылки
(одна от текущего указателя, другая - от
следующего байта), принимаем решение,какая
из них выгоднее."
Так вот, если оказалось,что вторая ссы─
лка выгоднее, не следует сразу кодировать
текущий символ + эту ссылку. Надо символ
закодировать, а далее сдвинуть указатель
текущего адреса и СНОВА перейти на поиск
ссылки с адреса+1. И т.д. Так сделано на─
чиная с ZXRar v0.30, и это дало неплохие
результаты.
Info Guide #7:
Ускорить сжатие повторяющихся байт мож─
но следующим образом (и это тоже сделано в
новых версиях ZXRar ): если при поиске от
текущей позиции addr найдена ссылка с дли─
ной Є 8 (число подобрано опытным путём),то
не делаем поиск от позиции addr+1, т.е. не
выполняем Lazy Evaluation. При этом проиг─
рыш по размеру упакованного файла - всего
0.1%.
Я пробовал ещё один метод (добавляется
в самой процедуре поиска), основанный на
проверке смещения на равенство -1. Но пока
не удалось его отладить (см. исходник
ZXRar ).
Info Guide #6:
Ошибки в статье про ШИМ рассмотрены в
статье "Бипер" (раздел "Музыка" ).
Alone Coder