# Compression Algorithm
Let's create a compression algorithm 🤯
It sounds hard, but it's something achievable for almost anyone.
## 📝 Instructions
Create an algorithm that given a string, replaces its words matching the **`symbols` dictionary keys** and replaces them with their respective values on the same dictionary.
```python
symbols = {
"implementation": "🤯",
"practicality": '🤩',
"better": '😅',
"Although": "🥺"
}
```
For example:
| `Although, this is a great implementation of time` | → should become → | `🥺, this is a great 🤯 of time` |
| -------- | ------ | -------- |
The current project has 3 main files:
| Name | Description |
| -------- | ------ |
| compress.py | Contains the algorithm to compress the content, it has a function "compress" that receives the raw text and returns the compressed version of it |
| decompress.py | It's very similar to `compress.py` but it contains the algorithm to convert back the content from its compressed version to the original content |
| app.py | This is an entry file, and there is no need to update it, it imports and uses the other two files |
## 🔢 Steps
1. Take time to understand the code, start by opening and reading the `app.py` and follow the algorithm with your brain, review the compress.py and decompress.py files to understand where your solution must be implemented.
2. Run the app.py by typing `python3 app.py` and understand what is the output and why.
3. Edit the compress.py to create the **compression** algorithm.
4. Test your compression algorithm by running the app.py again.
5. Edit the decompress.py to create the **decompression** algorithm.
6. Test your decompression algorithm by running the app.py again.
7.
## 🌱 How to start this project
This project comes with the necessary files to start working, but you have two options to start:
a) Open this link in your browser with gitpod: https://gitpod.io#https://github.com/breatheco-de/exercise-compression-algorithm-python.git
b) You can clone this repository on your local computer:
```sh
$ git clone https://github.com/breatheco-de/exercise-compression-algorithm-python.git
````
Type the following in the command line:
```bash
python3 app.py
```
You should get a response similar to this:
```bash
✅No data lost.
document.txt has 824 size, compressed.txt has 768 size, compression of 7% in 0.0003972053527832031 seconds
```
💡 Important: Remember to create a new repository, update the remote (`git remote set-url origin `), and upload the code to your new repository using `add`, `commit` and `push`.
## 🎯 Metrics
1. Compression power: Ratio is defined as the ratio between the uncompressed size and the compressed size.
2. No Data lost: If we compress and decompress document.txt the result should be the original string of content.
## 🍩🍬🍭 Feeling confident?
By adding more words to the `symbols` dict you can achieve more compression power.
Try to re-do the algorithm to achieve a compression power above 15% with no data lost without just adding more words.