Advertisement
Guest User

Untitled

a guest
May 24th, 2015
207
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.98 KB | None | 0 0
  1. #!/usr/bin/env python
  2.  
  3. import sys
  4.  
  5.  
  6. class BirthName (object):
  7. __level_name_mask = "level_%d"
  8. __birth_name = []
  9. __letters = {}
  10. __numerology = {}
  11. __results = {}
  12.  
  13. def __init__(self, birth_name):
  14. for sub_name in birth_name.split(' '):
  15. self.__birth_name.append(sub_name.lower())
  16. self.__map_letters_to_num()
  17.  
  18. def __map_letters_to_num(self):
  19. counter = 0
  20. for letter in 'abcdefghijklmnopqrstuvwxyz':
  21. counter += 1
  22. if counter == 10:
  23. counter = 1
  24. self.__letters[letter] = counter
  25.  
  26. def __sum_letters(self, sub_str):
  27. __sum = 0
  28.  
  29. if sub_str in ('11', '22', '33'):
  30. return sub_str
  31.  
  32. for l in sub_str:
  33. if l in self.__letters:
  34. __sum += self.__letters[l]
  35. else:
  36. __sum += int(l)
  37.  
  38. return __sum
  39.  
  40. def __calc_levels(self, sub_str):
  41. __sum = []
  42. for l in sub_str:
  43. __current = self.__letters[l]
  44. __sum.append(__current)
  45.  
  46. def __reduce_again(self, level):
  47. for sub_name in self.__birth_name:
  48. if self.__results[sub_name][level] in ('11', '22', '33'):
  49. return False
  50. if len(self.__results[sub_name][level]) > 1:
  51. return True
  52. return False
  53.  
  54. def __reduce(self, level=0):
  55. for sub_name in self.__birth_name:
  56. __sum = 0
  57. if level == 0:
  58. self.__results[sub_name] = []
  59. __sum = self.__sum_letters(sub_name)
  60. else:
  61. __sum = self.__sum_letters(self.__results[sub_name][level - 1])
  62.  
  63. self.__results[sub_name].append(str(__sum))
  64.  
  65. if self.__reduce_again(level):
  66. self.__reduce(level + 1)
  67.  
  68. def calc(self):
  69. self.__reduce()
  70.  
  71. def __print(self, values=[]):
  72. for v in values:
  73. sys.stdout.write('{:>15}'.format(v))
  74. sys.stdout.write('\n')
  75.  
  76. def __print_columns(self, pos=0, sum_columns=False, reduce_last=False):
  77. __sum = 0
  78. columns = []
  79.  
  80. for name in self.__birth_name:
  81. value = self.__results[name][pos]
  82. __sum += int(value)
  83. columns.append(value)
  84.  
  85. if sum_columns:
  86. columns.append(str(__sum))
  87.  
  88. if reduce_last and len(str(__sum)) > 1:
  89. last = str(__sum)
  90. while len(last) > 1 and last not in ('11', '22', '33'):
  91. last = str(self.__sum_letters(str(last)))
  92. columns.append(last)
  93.  
  94. self.__print(columns)
  95.  
  96. def output(self):
  97. self.__print(self.__birth_name)
  98. self.__print_columns(0, True)
  99. last = len(self.__results[self.__birth_name[0]]) - 1
  100. counter = 1
  101. while counter <= last:
  102. self.__print_columns(counter)
  103. counter += 1
  104. self.__print_columns(last, True, True)
  105.  
  106.  
  107. def __main():
  108. num = BirthName(sys.argv[1])
  109. num.calc()
  110. num.output()
  111.  
  112.  
  113. if __name__ == '__main__':
  114. __main()
  115.  
  116. # EOF
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement