AlgorithmService.py 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455
  1. #!/usr/bin/env python3
  2. # -*- coding: utf-8 -*-
  3. import math
  4. class AlgorithmBaseOn35:
  5. letters = ['0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
  6. 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J',
  7. 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T',
  8. 'U', 'V', 'W', 'X', 'Y', 'Z']
  9. len1 = len(letters)
  10. def getLetter(self, number):
  11. tmp = int(number / self.len1)
  12. current = number % self.len1
  13. if tmp >= self.len1:
  14. return self.getLetter(tmp) + self.letters[current]
  15. else:
  16. return self.letters[tmp] + self.letters[current]
  17. def add(self, a, b):
  18. sum = a + b
  19. serial_number = self.getLetter(sum)
  20. return serial_number
  21. def __findLetter(self, char):
  22. for i in range(self.len1):
  23. if char == self.letters[i]:
  24. return i
  25. return -1
  26. def __drop0(self, text):
  27. char = text[0]
  28. if char == '0':
  29. return self.__drop0(text[1:])
  30. else:
  31. return text
  32. def to10(self, serial):
  33. serial = self.__drop0(serial)
  34. print(serial)
  35. len1 = len(serial)
  36. print(len1)
  37. sum = 0
  38. for char in serial:
  39. tmp = self.__findLetter(char)
  40. if tmp == -1:
  41. return None
  42. print(tmp)
  43. sum += (tmp * math.pow(35, len1 - 1))
  44. len1 -= 1
  45. return sum