banana.py 2.6 KB

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