cours 2 algo

This commit is contained in:
Debucquoy 2023-02-14 17:45:04 +01:00
parent 5c73c32975
commit 93ae5a67d2
No known key found for this signature in database
GPG Key ID: 3B9EEB701C9E2919
6 changed files with 92 additions and 3 deletions

View File

@ -10,15 +10,15 @@ Options:
--version Show Version --version Show Version
-c Compress -c Compress
-d Decompress -d Decompress
-t Choose Compression Type -t Choose Compression Type (currently supported: lz, rle)
--in Input file --in Input file
--out Output file --out Output file
""" """
def read_file(filename:str): def read_file(filename:str) -> str:
try: try:
with open(filename) as file: with open(filename) as file:
return file.readall() return file.read()
except e: except e:
print(e) print(e)
@ -32,8 +32,59 @@ def lz_compression(text:str):
""" """
splitted_text = text.split() 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__": if __name__ == "__main__":
from docopt import docopt from docopt import docopt
argument = docopt(__doc__, version="V1") 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

Binary file not shown.

27
q2/cours2/Couple.java Normal file
View 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

Binary file not shown.

11
q2/cours2/Division.java Normal file
View 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);
}
}