Skip to content
Snippets Groups Projects
Commit 34e81f08 authored by Jacob Theisen's avatar Jacob Theisen
Browse files

sjo

parent 098169b0
No related branches found
No related tags found
No related merge requests found
......@@ -37,7 +37,6 @@ def dcomp():
all_strings = dcomp()
table = []
for i in all_strings:
......@@ -139,8 +138,7 @@ for i in all_strings:
if len(bit_string)%8 != 0:
rest = 8 - len(bit_string)%8
bit_string += '0' * rest
print(bit_string)
print(len(bit_string)/8)
bytes = []
......
......@@ -4,23 +4,30 @@ with open('./trash/huffmann_test_file_comp', 'rb') as file:
text = file.read()
extended_string = '¡¢£¤¥¦§¨©ª«¬­®¯°±²³´µ¶·¸¹º»¼½¾¿ÀÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐÑÒÓÔÕÖרÙÚÛÜÝÞßàáâãäåæçèéêëìíîïðñòóôõö÷øùúûüýþÿ'
i = 0
meta_data = ''
while True:
if meta_data[-9:] == 'END TABLE':
break
print(text[i:i+1])
if text[i:i+1].decode('UTF-8') not in string.printable:
print(text[i:i+2])
meta_data += text[i:i+2].decode('UTF-8')
i+2
else:
try:
meta_data += text[i:i+1].decode('UTF-8')
i += 1
text = text[i+2:]
print(len(text))
print('ascii')
except:
try:
meta_data += text[i:i+2].decode('UTF-8')
i += 2
print('extended ascii')
except:
meta_data += text[i:i+3].decode('UTF-8')
i += 3
print('nor')
text = text[i+2:]
print(meta_data)
meta_data = meta_data.split('\n')
rep_tree_arr = []
......@@ -79,17 +86,30 @@ for k in range(len(bit_string)):
full_code = b''
next_chars = 0
for i in range(0,len(lz_code),3):
value = lz_code[i]
with open('./hm_uncomp', 'w') as file:
file.write('')
for i in range(0,len(lz_code),6):
counter = 0
value = lz_code[i:i+2]
value = int.from_bytes(value, 'little')
with open('./hm_uncomp', 'ab') as file:
file.write(value.to_bytes(2, 'little'))
for k in huff_string[:value]:
if k not in string.printable and k not in extended_string:
print('nor')
counter +=2
elif k not in string.printable:
print('extende')
counter +=1
with open('./hm_uncomp', 'a') as file:
file.write(huff_string[:value])
huff_string = huff_string[value:]
if i + 2 <= len(lz_code):
file.write(huff_string[:value-counter])
huff_string = huff_string[value-counter:]
if i + 4 < len(lz_code):
with open('./hm_uncomp', 'ab') as file:
file.write(lz_code[i+1].to_bytes(2,'little'))
file.write(lz_code[i+2].to_bytes(2,'little'))
file.write(lz_code[i+2:i+4])
file.write(lz_code[i+4:i+6])
# with open('./hm_uncomp', 'rb') as file:
# print(file.read())
\ No newline at end of file
......@@ -19,7 +19,6 @@ def run_comp():
k = 0
while True:
#finished
print(index)
if index + increment >= len(text):
diff_inc = index + increment - len(text)
diff = increment - diff_inc
......@@ -73,7 +72,6 @@ def run_comp():
#run func and print result
a = run_comp()
print(a)
with open('./compressed_text', 'w') as file:
file.write('')
......
with open('./compressed_text', 'rb') as file:
with open('./hm_uncomp', 'rb') as file:
tekst = file.read()
......
No preview for this file type
No preview for this file type
Problemer, problemer. Alltid problemer! Dagens problem er å kompimere problematisk tekst.
\ No newline at end of file
Tekstsøk, Datakompresjon
Helge Hafting
Institutt for datateknologi og informatikk
Seksjon 1 Tekstsøk
• Fritekstsøk i dokumenter, nettsider og lignende
• Fritekstsøk i databaser
• Søkemotorer
• Søke etter repeterte strenger for datakompresjon
• DNA-matching
Tekst: rabarbra (lengde n)
Søkeord: bra (lengde m)
Skyv søkeordet langs teksten, se om det passer
• tegn som passer, vises med fet skrift
• første feil med kursiv
• dobbeltløkke for n-m posisjoner, og m tegn i søkeordet.
Hele greia, O\left(n\cdot m\right),\Omega\left(n\right)
Forsøk | r | a | b | a | r | b | r | a
----------+----+----+----+----+----+----+----+----
0 | b | r | a | | | | |
Forsøk | r | a | b | a | r | b | r | a
----------+----+----+----+----+----+----+----+----
1 | | b | r | a | | | |
Forsøk | r | a | b | a | r | b | r | a
----------+----+----+----+----+----+----+----+----
2 | | | b | r | a | | |
Forsøk | r | a | b | a | r | b | r | a
----------+----+----+----+----+----+----+----+----
3 | | | | b | r | a | |
Forsøk | r | a | b | a | r | b | r | a
----------+----+----+----+----+----+----+----+----
4 | | | | | b | r | a |
Forsøk | r | a | b | a | r | b | r | a
----------+----+----+----+----+----+----+----+----
5 | | | | | | b | r | a
Forsøk | r | a | b | a | r | b | r | a
----------+----+----+----+----+----+----+----+----
0 | b | r | a | | | | |
1 | | b | r | a | | | |
2 | | | b | r | a | | |
3 | | | | b | r | a | |
4 | | | | | b | r | a |
5 | | | | | | b | r | a
• Se på siste tegn i søketeksten først
• Hvis det ikke passer, flytt søketeksten så langt vi kan
| r | a | b | a | r | b | r | a
-----+----+----+----+----+----+----+----+----
0 | b | r | a | | | | |
1 | | | b | r | a | | |
2 | | | | b | r | a | |
3 | | | | | | b | r | a
• Hvis det passer, se på nestsiste osv.
• Hvis tegnet ikke fins i søketeksten, kan vi flytte m steg
frem:
| m | e | t | e | o | r | i | t | t | s | t | e | i | n
-----+----+----+----+----+----+----+----+----+----+----+----+----+----+----
0 | s | t | e | i | n | | | | | | | | |
1 | | | | | | s | t | e | i | n | | | |
2 | | | | | | | | | | s | t | e | i | n
• Hvis tegnet fins til venstre i søkeordet, kan vi flytte ordet
så det passer med teksten
• Vi har vi en tabell for hvor mye vi kan flytte
• I praksis en tabell for hele alfabetet, hvor de fleste tegn
gir et flytt på m. (Regel om «upassende tegn»)
......@@ -114,18 +114,14 @@ with open('../opg8-2021.pdf') as file:
import array
bits_array = array.array('B')
'''bits_array = array.array('B')
bits_array.append(int('110001', 2))
bits_array.append(int('110010', 2))
bits_array.append(int('110011', 2))
bits_array.append(int('11111111', 2))
print(bits_array)
with open('./test', 'w') as file:
file.write('')
print(bits_array)'''
with open('./test', 'ab') as file:
file.write(bits_array)
with open('./test', "rb") as file:
with open('./compressed_text', "rb") as file:
print(file.read())
\ No newline at end of file
Problemer, problemer. Alltid problemer! Dagens problem er å kompimere problematisk tekst.
\ No newline at end of file
Lorem ipsum dolor sit amet, consectetur adipiscing elit. Donec a tortor nec odio vehicula porttitor et sed quam. Phasellus finibus dolor a sodales fringilla. Quisque egestas sapien eget tellus tincidunt pretium. Aenean quis mauris eu mi accumsan tincidunt. Orci varius natoque penatibus et magnis dis parturient montes, nascetur ridiculus mus. Ut vel elit in urna placerat viverra mollis ut felis. Donec a maximus elit, ut fringilla neque. Sed a laoreet dui. Integer mauris est, imperdiet in enim ac, condimentum elementum erat. Curabitur massa turpis, rhoncus vitae felis elementum, vestibulum porttitor neque.
Donec dapibus pretium nisi ac consequat. Mauris fermentum feugiat laoreet. Donec in sem non nisl hendrerit tristique. Phasellus tempor tellus sit amet tortor elementum molestie. Proin in ex diam. Aliquam molestie, quam et semper mollis, nibh nibh vehicula tortor, at faucibus metus ante sed sapien. Class aptent taciti sociosqu ad litora torquent per conubia nostra, per inceptos himenaeos. Nullam vehicula, lacus sit amet pretium dignissim, tortor odio maximus sem, ut efficitur eros eros quis erat. Sed semper finibus ex sit amet dignissim. Vestibulum at ante eu purus ullamcorper hendrerit id mattis risus. Vestibulum nulla nisi, fermentum eget faucibus eu, elementum nec est. Nunc finibus fermentum semper.
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment