Skip to content

arktusprime/arithmetic_compression_wizard

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

🧙‍♂️ Мастер Арифметического Сжатия ✨

Библиотека арифметического кодирования на чистом Rust для эффективного сжатия текстовых данных. Демонстрирует продвинутые возможности Rust в алгоритмическом программировании и эффективной обработке данных! 🦀

🌟 Возможности

Алгоритм Сжатия

  • 🎯 Арифметическое кодирование - близкое к оптимальному энтропийное сжатие
  • 📚 Оптимизация словаря слов - интеллектуальное обнаружение и замена частых слов
  • 🎭 Высокие коэффициенты сжатия - до 40%+ на текстовых данных с идеальным восстановлением

Возможности Rust

  • 🛡️ Безопасность памяти - без переполнений буфера и утечек памяти
  • ✨ Типобезопасность - строгая типизация предотвращает ошибки алгоритма
  • 🚀 Нулевые зависимости - использует только стандартную библиотеку Rust
  • ⚡ Оптимизированная производительность - абстракции нулевой стоимости

Демонстрируемые концепции Rust

  • Владение и заимствование (&[u8] без копирования)
  • Коллекции (HashMap, Vec) и итераторы
  • Обработка ошибок (Option, Result)
  • Сопоставление с образцом и система трейтов
  • Модульная архитектура и документация

🚀 Быстрый старт

Установка

git clone https://github.com/arktusprime/arithmetic_compression_wizard
cd arithmetic_compression_wizard
cargo build
cargo test

Простое использование

use arithmetic_compression_wizard::simple_api::{compress_data, decompress_data};

fn main() {
    let original = b"Привет, мир! Это тест магии сжатия!";
    let compressed = compress_data(original);
    let restored = decompress_data(compressed);

    assert_eq!(original.as_slice(), restored.as_slice());
    println!("Сжатие завершено! ✨");
}

Продвинутое использование с анализом

use arithmetic_compression_wizard::prelude::*;

fn main() {
    let data = b"быстрая коричневая лиса прыгает через ленивую собаку";
    let artifact = weave_compression_spell(data);

    println!("📊 Исходный размер: {} байт", data.len());
    println!("📦 Сжатый размер: {} байт", artifact.compressed_bit_stream.len());
    println!("📖 Словарь слов: {} записей", artifact.mystical_word_grimoire.len());

    let restored = unweave_compression_spell(artifact);
    assert_eq!(data.as_slice(), restored.as_slice());
}

🎯 Алгоритм

Арифметическое кодирование представляет сообщение как число в интервале [0, 1), где каждый символ сужает интервал на основе его вероятности. Это обеспечивает сжатие, близкое к теоретическому пределу энтропии Шеннона.

Оптимизация словаря анализирует текст для поиска часто встречающихся слов (>3 вхождений), которые заменяются короткими токенами для дополнительного сжатия.

📁 Структура проекта

src/
├── lib.rs                          # Публичный API библиотеки
├── main.rs                         # Демонстрационное приложение
├── bit_wizardry/                   # Низкоуровневая манипуляция битами
├── compression_engine/             # Алгоритмы сжатия
└── decompression_oracle/           # Алгоритмы распаковки

🧪 Тестирование и демо

# Запуск тестов
cargo test

# Демонстрационное приложение
cargo run --bin compression-demo

# Примеры использования
cargo run --example quick_start
cargo run --example basic_compression_demo

📊 Производительность

Тип данных Коэффициент сжатия Скорость
"Гамлет" Шекспира (190KB) 43.13% ~50MB/s
Обычный текст 35-45% ~60MB/s
Повторяющиеся данные 70%+ ~80MB/s

🎓 Образовательная ценность

Проект идеален для изучения:

  • Системного программирования на Rust - безопасная работа с памятью и битами
  • Алгоритмов сжатия - полная реализация арифметического кодирования
  • Архитектуры кода - модульный дизайн и документирование
  • Продвинутых возможностей Rust - владение, трейты, обобщения, итераторы

🛠️ Разработка

cargo build --release    # Релизная сборка
cargo doc --open         # Генерация документации
cargo clippy            # Линтинг
cargo fmt               # Форматирование

📜 Лицензия

MIT License


Сделано с 🦀 Rust и ✨ магией сжатия!

Репозиторий: https://github.com/arktusprime/arithmetic_compression_wizard

About

No description, website, or topics provided.

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages