cours 2 algo
This commit is contained in:
parent
5c73c32975
commit
93ae5a67d2
@ -10,15 +10,15 @@ Options:
|
||||
--version Show Version
|
||||
-c Compress
|
||||
-d Decompress
|
||||
-t Choose Compression Type
|
||||
-t Choose Compression Type (currently supported: lz, rle)
|
||||
--in Input file
|
||||
--out Output file
|
||||
"""
|
||||
|
||||
def read_file(filename:str):
|
||||
def read_file(filename:str) -> str:
|
||||
try:
|
||||
with open(filename) as file:
|
||||
return file.readall()
|
||||
return file.read()
|
||||
except e:
|
||||
print(e)
|
||||
|
||||
@ -32,8 +32,59 @@ def lz_compression(text:str):
|
||||
|
||||
"""
|
||||
splitted_text = text.split()
|
||||
word_list = list()
|
||||
key = dict()
|
||||
key_value = 0
|
||||
for v in splitted_text:
|
||||
if v not in key.keys():
|
||||
key[v] = key_value
|
||||
key_value += 1
|
||||
word_list.append(key[v])
|
||||
return word_list, key
|
||||
|
||||
def save_lz(filename, word_list, key_list):
|
||||
with open(filename, 'w') as file:
|
||||
word_list = map(str, word_list)
|
||||
file.writelines(' '.join(word_list))
|
||||
file.writelines(' '.join(list(key_list.items())))
|
||||
|
||||
|
||||
def lz_decompression(text:str):
|
||||
pass
|
||||
|
||||
|
||||
def rle_compression(text:str):
|
||||
"""compress all duplicate word
|
||||
put each word into a list and make make a string of all the occurence
|
||||
|
||||
:text: string to compress
|
||||
:returns: tuple with (list of word, decoding string)
|
||||
|
||||
"""
|
||||
splitted_text = text.split()
|
||||
|
||||
|
||||
def rle_decompression(text:str):
|
||||
pass
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
from docopt import docopt
|
||||
argument = docopt(__doc__, version="V1")
|
||||
print(argument)
|
||||
if argument['<type>'].lower() == 'lz':
|
||||
if argument['-d']:
|
||||
result = lz_decompression(read_file(argument['<input>']))
|
||||
print(result)
|
||||
if argument['-c']:
|
||||
w_list, k_list = lz_compression(read_file(argument['<input>']))
|
||||
save_lz('test.Ltxt', w_list, k_list)
|
||||
elif argument['<type>'].lower() == 'rle':
|
||||
if argument['-d']:
|
||||
result = rle_decompression(read_file(argument['<input>']))
|
||||
print(result)
|
||||
if argument['-c']:
|
||||
result = rle_compression(read_file(argument['<input>']))
|
||||
print(result)
|
||||
else:
|
||||
raise TypeError("choose a type between lz and rle")
|
||||
|
BIN
q2/cours2/Couple.class
Normal file
BIN
q2/cours2/Couple.class
Normal file
Binary file not shown.
27
q2/cours2/Couple.java
Normal file
27
q2/cours2/Couple.java
Normal file
@ -0,0 +1,27 @@
|
||||
public class Couple {
|
||||
|
||||
private int q;
|
||||
private int r;
|
||||
|
||||
public Couple(int q, int r) {
|
||||
this.q = q;
|
||||
this.r = r;
|
||||
}
|
||||
|
||||
public void setQ(int q) {
|
||||
this.q = q;
|
||||
}
|
||||
|
||||
public int getQ() {
|
||||
return q;
|
||||
}
|
||||
|
||||
public void setR(int r) {
|
||||
this.r = r;
|
||||
}
|
||||
|
||||
public int getR() {
|
||||
return r;
|
||||
}
|
||||
|
||||
}
|
BIN
q2/cours2/Division.class
Normal file
BIN
q2/cours2/Division.class
Normal file
Binary file not shown.
11
q2/cours2/Division.java
Normal file
11
q2/cours2/Division.java
Normal file
@ -0,0 +1,11 @@
|
||||
public class Division {
|
||||
public static void main(String[] args) {
|
||||
Couple test = Division(5, 3);
|
||||
System.out.println(test.getQ() + ": " + test.getR());
|
||||
|
||||
}
|
||||
public static Couple Division(int a, int b){
|
||||
return new Couple(a/b, a%b);
|
||||
|
||||
}
|
||||
}
|
Binary file not shown.
Loading…
Reference in New Issue
Block a user