X-Git-Url: http://git.scottworley.com/rfc1751/blobdiff_plain/1cfbde798b119a1678a7941d3702f52018f7e857..c4374da5ae0994f0ca5e2e243e5577199267d985:/rfc1751.py?ds=inline diff --git a/rfc1751.py b/rfc1751.py index 70bae6e..70f5b3a 100644 --- a/rfc1751.py +++ b/rfc1751.py @@ -18,7 +18,8 @@ import sys from rfc1751wordlist import WORD_LIST, WORD_LIST_SIZE -# TODO: Decode +WORD_LIST_INVERTED = {word: i for (i, word) in enumerate(WORD_LIST)} +assert len(WORD_LIST_INVERTED) == WORD_LIST_SIZE def encode_actual(x: int) -> list[str]: @@ -30,8 +31,18 @@ def encode(x: int) -> list[str]: return [WORD_LIST[x]] if x == 0 else encode_actual(x) +def decode(x: list[str]) -> int: + return WORD_LIST_SIZE * decode(x[:-1]) + \ + WORD_LIST_INVERTED[x[-1]] if x else 0 + + def main() -> None: - print(' '.join(encode(int(sys.argv[1])))) + if sys.argv[1].isnumeric(): + print(' '.join(encode(int(sys.argv[1])))) + elif len(sys.argv) == 2: + print(decode(sys.argv[1].split(' '))) + else: + print(decode(sys.argv[1:])) if __name__ == '__main__':