https://github.com/devsargam/huffman-encoder-decoder
https://github.com/devsargam/huffman-encoder-decoder
Last synced: over 1 year ago
JSON representation
- Host: GitHub
- URL: https://github.com/devsargam/huffman-encoder-decoder
- Owner: devsargam
- Created: 2023-12-12T16:51:04.000Z (over 2 years ago)
- Default Branch: master
- Last Pushed: 2023-12-13T15:48:00.000Z (over 2 years ago)
- Last Synced: 2025-01-22T23:43:54.620Z (over 1 year ago)
- Language: TypeScript
- Size: 1.22 MB
- Stars: 2
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README

Huffman coding (TypeScript)
Huffman code is a particular type of optimal prefix code that is commonly used for lossless data compression. This is the implementation of the algorithm on TypeScript.
## Installation
Clone this repository and install modules:
```bash
git clone https://github.com/devsargam/Huffman-Encoder-Decoder.git
cd Huffman-Encoder-Decoder
npm install
npm run dev(or build)
```

## Usage
The algorithm implementation is in the file /src/index.ts
Let's encode and decode plain text!
```typescript
import { getCodesFromText, encode, decode } from './huffman';
/** ENCODING */
let text: string = 'abracadabra';
let encodedText: string = '';
let codes: Map = getCodesFromText(text); // Symbols codes
let encodedArray: Array = encode(text, codes); // Get array of encoded symbols
encodedText = encodedArray.join(''); // Encoded array to string. Equals 0101100...
/** DECODING */
text = decode(encodedArray, codes); // Equals 'abracadabra'
```

## APIs
#### Encode text
```typescript
encode(text: string, codes: Map): Array
```
#### Decode text
```typescript
decode(text: Array, codes: Map):string
```
#### Get symbols codes from text
```typescript
getCodesFromText(text: string): Map
```
#### Get symbols frequency
```typescript
getFrequency(text: string): Array
```
#### Get Huffman Tree from frequency array
```typescript
getTree(arr: Array)
```
#### Get relative frequency array
```typescript
getRelativeFrequency(arr: Array): Array
```
#### Get text entropy
```typescript
getEntropyOfText(text: string): number
```