Ответы пользователя по тегу Сжатие данных
  • Существуют ли алгоритмы сжатия случайных данных с конечным алфавитом?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Случайные данные - это наихудший вариант для сжатия. Практически все алгоритмы сжатия данных без потерь основаны на поиске закономерностей и повторяющихся последовательностей. В случайной последовательности нет ни того, ни другого.
    Ответ написан
    12 комментариев
  • Что это за метод сжатия?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    p[...] - это номера цветов из общей палитры, индексы от 0 до 3.
    Дальше идут сами цвета точек.
    Цифра 0..3 - индекс цвета в палитре спрайта
    x - начало повторений. Сразу после него идет цифра индекса цвета, дальше до запятой - количество повторений (x011, - повторить 0 одиннадцать раз).
    "p[0,2,5,8]x022,1111x010,x18,x07,x110,x05,x17,33111000x18,32311000x19,3311003333x111,001133x110,001113x110,011213x110,011113x110,011113x110,0011233x15,x35,00222331133322200222203333002222"
    Получаем строку из 256 символов
    0000000000000000000000111100000000001111111100000001111111111000001111111331110001111111132311000111111111331100333311111111111001133111111111100111311111111110112131111111111011113111111111101111311111111110011233111113333300222331133322200222203333002222

    Разбиваем на 16 подстрок
    0000000000000000
    0000001111000000
    0000111111110000
    0001111111111000
    0011111113311100
    0111111113231100
    0111111111331100
    3333111111111110
    0113311111111110
    0111311111111110
    1121311111111110
    1111311111111110
    1111311111111110
    0112331111133333
    0022233113332220
    0222203333002222

    Заменяем индексы цветами из палитры, получаем жучка yj-zin3n79g0u0dgucf6teanlfm.png
    P.S. Если массив индексов палитры не указан, то используется полная базовая палитра. Для палитры спрайта до 10 цветов включительно индексы кодируются одной цифрой (0-9), до 100 цветов - двумя цифрами (00-99), и т.д.
    Ответ написан
    3 комментария
  • Как упаковать в 128 бит значения?

    Rsa97
    @Rsa97
    Для правильного вопроса надо знать половину ответа
    Берём номер первого элемента (0..31)
    Умножаем на 31, прибавляем номер второго элемента в последовательности с удалённым первым элементом (0..30).
    Умножаем на 30, прибавляем номер третьего элемента в последовательности с удалёнными первым и вторым элементами (0..29).
    ...
    Умножаем на 2, прибавляем номер тридцать первого элемента в последовательности с удалёнными первым - тридцатым элементами (0..1).
    Максимум получим 8.68331761881189e+36, что меньше 2128 = 3.4028237e+38.
    Ответ написан
    3 комментария