да тут пакер-то совсем простой получается, смысла мало будет в оригинальном, раве что для совсем уж несжимаемых редких
Вид для печати
(+) это 0??? - повтор (=)
(-) это 0 - повтор (< ^)
10 - НЕ может быть переключением на копирование сверху; может на слева и на загрузку (< =)
11 - НЕ может быть переключением на копирование слева; может на сверху и на загрузку (^ =)
на что именно - определяется по контексту (ну сам подумай, какой смысл "переключаться" на уже и так активное действие))
- - - Добавлено - - -
само собой, переключение совмещено с однократным выполнением нового активного действия
для варианта с учётом состояния:
мин 103
макс 175
сред 139.2
в сумме 10525 байт
(по сравнению с предыдущим вариантом 9 уровней пожалось хуже, в среднем на 4.5 байта каждый, самый фиговый аж 12 байт)
https://i.imgur.com/rb3qD6z.png
буду смотреть, может, чего-то намудрил
теоретический самый худший случай - 4 бита на тайл без RLE
с RLE - почти три как в оригинале (лишних битов несколько на весь уровень)
но реализация RLE усложнит и замедлит пакер, да и не особо нужна по среднему
302 байта:
https://i.imgur.com/LkdG6KV.png
268 байт:
https://i.imgur.com/00w8kN5.png
255 байт:
https://i.imgur.com/2W3FawR.png
251 байт:
https://i.imgur.com/plIL1oE.png
244 байта:
https://i.imgur.com/OentFwj.png
для таких извращений самое простое - задавать другое смещение для ^ (-31/-33/-64/...)
- - - Добавлено - - -
или уже пять действий запилить с тремя вариантами ^
переключение тогда будет стоить три бита вместо двух
но повтор прошлого - по-прежнему один бит