Skip to content

KeisJS/StringSerializer

Repository files navigation

Описание

Условие:

  • Есть множество (массив, где порядок не важен) целых чисел в диапазоне от 1 до 300.
  • Количество чисел - до 1000.

Требуется написать функцию сериализации / десериализации и набор тестов демонстрирующих работу.

Требования к реализации:

  • сериализованная строка должна быть
    • компактной
    • содержать только ASCII символы
    • должна быть в среднем на 50% короче отностильено простой сериализации

Требования к содержанию и представлению тестов:

  • исходная строка, сжатая строка, коэффициент сжатия.
    • примеры тестов:
    • простейшие короткие
    • случайные - 50 чисел, 100 чисел, 500 чисел, 1000 чисел
    • граничные - все числа 1 знака, все числа из 2х знаков, все числа из 3х знаков, каждого числа по 3 - всего чисел 900

Решение:

  • числа будут кодироваться в символы из набора символов: ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_
  • каждое число переводится в двоичную систему счисления и делится на группы по 6 бит. Каждой группе соотвествует символ из набора символов
  • формат сериализованных чисел, где count - это счетчик кодированный 2-мя символами
    • [count][char]
    • [count][<char><char>]
    • [count][<char>(<char><char>)]: где количество повторений первого . Скобки использованы для наглядности
    • [count][(<char><char>)(<char><char>)]: как предыдущий пункт, но число представляется 2-мя символами
  • сериализованная строка:
[count][char][count][<char><char>][count][<char>(<char><char>)][count][(<char><char>)(<char><char>)]

Настройка

Подготовка yarn

# включить corepack
corepack enable

Установить зависимостей

yarn install

Сервер разработки

yarn dev

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published