cours 2 algo
This commit is contained in:
parent
5c73c32975
commit
93ae5a67d2
@ -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
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