banana.py 2.6 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788
  1. #!/usr/bin/env python3
  2. def dec2banana(num, dictstart = None, shiftend = None, minlength = None, dictionary = None):
  3. #defaults
  4. if dictstart is None: dictstart = 0
  5. if shiftend is None: shiftend = 0
  6. if minlength is None: minlength = 0
  7. if dictionary is None: dictionary = [list("bcdfglmnprstvz"), list("aeiou")]
  8. numdict = len(dictionary)
  9. v = num
  10. st = ""
  11. l = 0
  12. i = (numdict - 1 + dictstart + shiftend) % numdict
  13. while not (v == 0 and i == (numdict - 1 + dictstart) % numdict and l >= minlength):
  14. r = v % len(dictionary[i])
  15. v = int(v / len(dictionary[i]))
  16. st = dictionary[i][r] + st
  17. i = (i - 1) % numdict
  18. l += 1
  19. return(st)
  20. def banana2dec(banana, dictstart = None, shiftend = None, dictionary = None):
  21. #defaults
  22. if dictstart is None: dictstart = 0
  23. if shiftend is None: shiftend = 0
  24. if dictionary is None: dictionary = [list("bcdfglmnprstvz"), list("aeiou")] #, list("123456")
  25. numdict = len(dictionary)
  26. if (len(banana) - shiftend) % numdict != 0:
  27. return("Banana non valida")
  28. v = 0
  29. for i in range(len(banana)):
  30. r = (numdict + i + dictstart) % numdict
  31. try:
  32. v = v * len(dictionary[r]) + dictionary[r].index(banana[i])
  33. except:
  34. return("Carattere non valido in posizione", i+1)
  35. return(v)
  36. def bananarandom(dictstart = None, shiftend = None, minlength = None, dictionary = None):
  37. import random
  38. #defaults
  39. if dictstart is None: dictstart = 0
  40. if shiftend is None: shiftend = 0
  41. if minlength is None: minlength = 6
  42. if dictionary is None: dictionary = [list("bcdfglmnprstvz"), list("aeiou")]
  43. numdict = len(dictionary)
  44. st = ""
  45. l = 0
  46. i = (numdict - 1 + dictstart + shiftend) % numdict
  47. while not (i == (numdict - 1 + dictstart) % numdict and l >= minlength):
  48. r = random.randint(0, len(dictionary[i]) - 1)
  49. st = dictionary[i][r] + st
  50. i = (i - 1) % numdict
  51. l += 1
  52. return(st)
  53. def isbanana(banana, dictstart = None, shiftend = None, dictionary = None):
  54. #defaults
  55. if dictstart is None: dictstart = 0
  56. if shiftend is None: shiftend = 0
  57. if dictionary is None: dictionary = [list("bcdfglmnprstvz"), list("aeiou")] #, list("123456")
  58. numdict = len(dictionary)
  59. if (len(banana) - shiftend) % numdict != 0:
  60. return(False)
  61. for i in range(len(banana)):
  62. r = (numdict + i + dictstart) % numdict
  63. if banana[i] not in dictionary[r]:
  64. return(False)
  65. return(True)
  66. if __name__ == "__main__":
  67. print("Ciao sono la libreria banana")