diff --git a/dyn_huffman.py b/dyn_huffman.py index 84e383aaf6e50708a18bee50259ee9dfb26a38db..4ff9dc712bb73e57aaa4b8f1f930dcdc26014cbc 100644 --- a/dyn_huffman.py +++ b/dyn_huffman.py @@ -209,20 +209,28 @@ def decode(encoded: str) -> (str, str): def main() -> None: parser = argparse.ArgumentParser(prog='dyn_huffman.py') - parser.add_argument('input') + group = parser.add_mutually_exclusive_group(required=True) + group.add_argument('-e', '--encode', metavar='TEXT', + help='Encode given input string') + group.add_argument('-d', '--decode', metavar='BINARY', + help='Decode binary string') args = parser.parse_args() - print('=============== Encoding ===============') - encoded_input = encode(args.input) - print(f'Code final: {encoded_input}') - + print('============= Vitter params =============') + e, r = compute_vitter_params(len(LIST_ALPHABET)) + print(f'e = {e}\tr = {r}') print() - print('=============== Decoding ===============') - with_nyt, without_nyt = decode(encoded_input) - print(f'Message initial avec NYT : {with_nyt}') - print(f'Message initial sans NYT : {without_nyt}') + if args.encode: + print('=============== Encodage ===============') + encoded_input = encode(args.encode) + print(f'Code final: {encoded_input}') + elif args.decode: + print('=============== Décodage ===============') + with_nyt, without_nyt = decode(args.decode) + print(f'Message initial avec NYT : {with_nyt}') + print(f'Message initial sans NYT : {without_nyt}') if __name__ == "__main__":