Języki programowania I

Zadanie

Napisać trywialny program kompresujący trywialny plik tekstowy.

Jak to ma działać?

Załóżmy, że dopuszczamy możliwość użycia w skompresowanym tekście: Teraz każdemu znakowi przyporządkujmy liczbę dwójkową według poniższej tabeli
ZnakKod
A00000
B00001
C00010
D00011
E00100
F00101
G00110
H00111
I01000
J01001
K01010
L01011
M01100
N01101
O01110
P01111
Q10000
R10001
S10010
T10011
U10100
V10101
W10110
X10111
Y11000
Z11001
spacja11010
'\n'11011
rezerwa11100
rezerwa11101
rezerwa11110
koniec napisu11111
Tak więc napis
ALA MA KOTA
powinien być reprezentowany przez następujący ciąg bitów
0000001011000001101001100000001101001010011101001100000
Długość tego ciągu to 55 bitów czyli 6 bajtów i 7 bitów. Dodatkowo przyjmujemy założenie, że napis musi kończyć sie sekwencją: 11111 a ostatni bajt musi zostać dopełniony zerami.
bajt 1: 00000010
bajt 2: 11000001
bajt 3: 10100110
bajt 4: 00000011
bajt 5: 01001010
bajt 6: 01110100
bajt 7: 1100000

po uwzględnieniu faktu, że napis musi kończyć sie sekwencją: 11111 i dopełnieniu zerami otrzymujemy:

bajt 7: 11000001
bajt 8: 11110000
Aby poradzić sobie z tym zadaniem przydatne mogą być informacje o
  1. przesunięciu bitowym
  2. operacje bitowe
Tak więc tekst o pierwotnej długości 11 bajtów teraz będzie miał długość 8 bajtów.

Moje rozwiązanie (kompresja)
Moje rozwiązanie (dekompresja)
Plik testowy 1
Skompresowany plik testowy, zapisany szesnastkowo, powinien wyglądać jak poniżej
02 C1 A6 03
4A 74 C1 B9
64 11 21 9D
A4 68 34 89
0C ED 83 4D
05 89 3D 30
1A 1D 81 A5
3A 78 DF 00