bananalib.py 2.2 KB

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