An open API service indexing awesome lists of open source software.

https://github.com/phundrak/lzw-assignment

University assignment for the lzw compression algorithm
https://github.com/phundrak/lzw-assignment

assignment compression compression-algorithm cpp17 lzw lzw-algorithm lzw-compression lzw-compressor university-assignment

Last synced: 3 months ago
JSON representation

University assignment for the lzw compression algorithm

Awesome Lists containing this project

README

        

[![CircleCI](https://circleci.com/gh/Phundrak/lzw-assignment/tree/master.svg?style=svg)](https://circleci.com/gh/Phundrak/lzw-assignment/tree/master)
[![Travis Badge](https://travis-ci.org/Phundrak/lzw-assignment.svg?branch=master)](https://travis-ci.org/Phundrak/lzw-assignment)
[![Codacy Badge](https://api.codacy.com/project/badge/Grade/80cf9a0514554f368effaf78d8e4ae15)](https://www.codacy.com/app/Phundrak/lzw-assignment?utm_source=github.com&utm_medium=referral&utm_content=Phundrak/lzw-assignment&utm_campaign=Badge_Grade)
[![CodeFactor](https://www.codefactor.io/repository/github/phundrak/lzw-assignment/badge)](https://www.codefactor.io/repository/github/phundrak/lzw-assignment)
[![SonarCloud Badge](https://sonarcloud.io/api/project_badges/measure?project=Phundrak_lzw-assignment&metric=alert_status)](https://sonarcloud.io/dashboard?id=Phundrak_lzw-assignment)
[![Spacemacs Badge](https://cdn.rawgit.com/syl20bnr/spacemacs/442d025779da2f62fc86c2082703697714db6514/assets/spacemacs-badge.svg)](http://spacemacs.org)

# LZW Compressing tool

This is a university assignment for which I aim to create an LZW algorithm implementation to create a small tool similar to `gzip` and `gunzip` that can compress and uncompress files in a lossless fashion.

This project is written is C++17, compiled with clang under a UNIX environment. Other compilers and environments will not be tested.

## How to use it

Currently, five different options are available to the user:
- `-h` or `--help` will show how to use `projet_lzw`
- `-c` or `--compress` tells `projet_lzw` to compress the input file
- `-u` or `--uncompress` tells `projet_lzw` to uncompress the input file
- `-i ` or `--input ` specifies the input file to be compressed or uncompressed (**MANDATORY**)
- `-o ` or `--output ` specifies the name of the output file. If not used, the default output name for compression is `output.lzw`, and the default name for uncompressing is `_uncompressed`.

By default, `projet_lzw` will uncompress the (mandatory) input file.

It is planned to add in the future a sixth option, `-p` or `--passes` that will allow to compress multiple times the input file.