Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/usr/bin/env python
- import sys
- class BirthName (object):
- __level_name_mask = "level_%d"
- __birth_name = []
- __letters = {}
- __numerology = {}
- __results = {}
- def __init__(self, birth_name):
- for sub_name in birth_name.split(' '):
- self.__birth_name.append(sub_name.lower())
- self.__map_letters_to_num()
- def __map_letters_to_num(self):
- counter = 0
- for letter in 'abcdefghijklmnopqrstuvwxyz':
- counter += 1
- if counter == 10:
- counter = 1
- self.__letters[letter] = counter
- def __sum_letters(self, sub_str):
- __sum = 0
- if sub_str in ('11', '22', '33'):
- return sub_str
- for l in sub_str:
- if l in self.__letters:
- __sum += self.__letters[l]
- else:
- __sum += int(l)
- return __sum
- def __calc_levels(self, sub_str):
- __sum = []
- for l in sub_str:
- __current = self.__letters[l]
- __sum.append(__current)
- def __reduce_again(self, level):
- for sub_name in self.__birth_name:
- if self.__results[sub_name][level] in ('11', '22', '33'):
- return False
- if len(self.__results[sub_name][level]) > 1:
- return True
- return False
- def __reduce(self, level=0):
- for sub_name in self.__birth_name:
- __sum = 0
- if level == 0:
- self.__results[sub_name] = []
- __sum = self.__sum_letters(sub_name)
- else:
- __sum = self.__sum_letters(self.__results[sub_name][level - 1])
- self.__results[sub_name].append(str(__sum))
- if self.__reduce_again(level):
- self.__reduce(level + 1)
- def calc(self):
- self.__reduce()
- def __print(self, values=[]):
- for v in values:
- sys.stdout.write('{:>15}'.format(v))
- sys.stdout.write('\n')
- def __print_columns(self, pos=0, sum_columns=False, reduce_last=False):
- __sum = 0
- columns = []
- for name in self.__birth_name:
- value = self.__results[name][pos]
- __sum += int(value)
- columns.append(value)
- if sum_columns:
- columns.append(str(__sum))
- if reduce_last and len(str(__sum)) > 1:
- last = str(__sum)
- while len(last) > 1 and last not in ('11', '22', '33'):
- last = str(self.__sum_letters(str(last)))
- columns.append(last)
- self.__print(columns)
- def output(self):
- self.__print(self.__birth_name)
- self.__print_columns(0, True)
- last = len(self.__results[self.__birth_name[0]]) - 1
- counter = 1
- while counter <= last:
- self.__print_columns(counter)
- counter += 1
- self.__print_columns(last, True, True)
- def __main():
- num = BirthName(sys.argv[1])
- num.calc()
- num.output()
- if __name__ == '__main__':
- __main()
- # EOF
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement