12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576 |
- #!/usr/bin/env python3
- import argparse
- def dec2banana():
- parser = argparse.ArgumentParser(description="Convert dec number to banana")
- parser.add_argument("num", help="number to be converted", type=int)
- parser.add_argument("--dictionary", help="Set dictionary", type=list, nargs='+', default=[list("bcdfglmnprstvz"), list("aeiou")]) # , list("123456")
- parser.add_argument("--exactlength", help="Set exact length", type=int, default=0)
- parser.add_argument("--minlength", help="Set minimum length", type=int, default=0)
- parser.add_argument("--dictstart", help="Set starting dictionary", type=int, default=0)
- parser.add_argument("--shiftend", help="Set shift for ending dictionary", type=int, default=0)
-
- args = parser.parse_args()
- dictionary = args.dictionary
- numdict = len(dictionary)
- minlength = args.minlength
-
- v = args.num
- st = ""
- l = 0
-
- if args.exactlength == 0:
- i = (numdict - 1 + args.dictstart + args.shiftend) % numdict
- while not (v == 0 and i == (numdict - 1 + args.dictstart) % numdict and l >= args.minlength):
- r = v % len(dictionary[i])
- v = int(v / len(dictionary[i]))
- st = dictionary[i][r] + st
- i = (i - 1) % numdict
- l += 1
- else:
- i = (numdict - 1 + args.dictstart + args.shiftend + args.exactlength) % numdict
- while not (l >= args.exactlength):
- r = v % len(dictionary[i])
- v = int(v / len(dictionary[i]))
- st = dictionary[i][r] + st
- i = (i - 1) % numdict
- l += 1
- if v > 0:
- print("Error, result longer than exactlength")
- return
-
- print(st)
-
- def banana2dec():
- parser = argparse.ArgumentParser(description="Convert banana string to dec")
- parser.add_argument("banana", help="strin to be converted")
- parser.add_argument("--dictionary", help="Set dictionary", type=list, nargs='+', default=[list("bcdfglmnprstvz"), list("aeiou")]) # , list("123456")
- parser.add_argument("--dictstart", help="Set starting dictionary", type=int, default=0)
- parser.add_argument("--shiftend", help="Set shift for ending dictionary", type=int, default=0)
-
- args = parser.parse_args()
- dictionary = args.dictionary
- numdict = len(dictionary)
- banana = args.banana
- v = 0
- for i in range(len(banana)):
- r = (numdict + i + args.dictstart) % numdict
- try:
- v = v * len(dictionary[r]) + dictionary[r].index(banana[i])
- except:
- print("Carattere non valido in posizione", i+1)
- return()
- print(v)
- if __name__ == "__main__":
- #dec2banana()
- #banana2dec()
- print("Ciao sono la libreria banana")
|