Advertisement
aajjccrr

Python behaviour

Aug 8th, 2014
459
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 4.55 KB | None | 0 0
  1. class InitialOrdinal(object):
  2.  
  3.     def __init__(self, index=0, power=1):
  4.         self.index = index
  5.  
  6.     def __eq__(self, other):
  7.         if self.index == other.index:
  8.             return True
  9.         else:
  10.             return False
  11.  
  12.     def __lt__(self, other):
  13.         if self.index < other.index:
  14.             return True
  15.         else:
  16.             return False
  17.  
  18.     def __gt__(self, other):
  19.         if self.index > other.index:
  20.             return True
  21.         else:
  22.             return False
  23.  
  24.        
  25. class Omega(object):
  26.  
  27.     def __init__(self, index=0, power=1, copies=1):
  28.  
  29.         self.index = index
  30.         self.power = power
  31.         self.copies = copies
  32.  
  33.         try:
  34.             if InitialOrdinal(power.index) > InitialOrdinal(index):
  35.                 self.index = power.index
  36.                 self.power = 1
  37.             else:
  38.                 pass
  39.            
  40.         except AttributeError:
  41.             pass
  42.        
  43.         if copies > self:
  44.             self.index = copies.index
  45.             self.power = copies.power
  46.             self.copies = 1
  47.  
  48.         try:
  49.             if InitialOrdinal(self.index) == InitialOrdinal(copies.index):
  50.                 self.power = self.power + 1
  51.                 self.copies = 1
  52.  
  53.         except AttributeError:
  54.             pass
  55.  
  56.     def __eq__(self, other):
  57.         try:
  58.             if all([self.index == other.index,
  59.                     self.power == other.power,
  60.                     self.copies == other.copies]):
  61.                 return True
  62.             else:
  63.                 return False
  64.         except AttributeError:
  65.             return False
  66.  
  67.     def __lt__(self, other):
  68.         try:
  69.             if self.index < other.index:
  70.                 return True
  71.             elif self.index == other.index and self.power < other.power:
  72.                 return True
  73.             elif all([self.index == other.index,
  74.                       self.power == other.power,
  75.                       self.copies < other.copies]):
  76.                 return True
  77.             else:
  78.                 return False
  79.         except AttributeError:
  80.             return False
  81.  
  82.     def __leq__(self, other):
  83.         try:
  84.             if self.index < other.index:
  85.                 return True
  86.             elif self.index == other.index and self.power < other.power:
  87.                 return True
  88.             elif all([self.index == other.index,
  89.                       self.power == other.power,
  90.                       self.copies < other.copies]):
  91.                 return True
  92.             elif self == other:
  93.                 return True
  94.             else:
  95.                 return False
  96.         except AttributeError:
  97.             return False
  98.  
  99.     def __gt__(self, other):
  100.         try:
  101.             if self.index > other.index:
  102.                 return True
  103.             elif self.index == other.index and self.power > other.power:
  104.                 return True
  105.             elif all([self.index == other.index,
  106.                       self.power == other.power,
  107.                       self.copies > other.copies]):
  108.                 return True
  109.             else:
  110.                 return False
  111.         except AttributeError:
  112.             return True
  113.  
  114.     def __geq__(self, other):
  115.        
  116.         try:
  117.             if self.index >= other.index:
  118.                 return True
  119.             elif self.index == other.index and self.power >= other.power:
  120.                 return True
  121.             elif all([self.index == other.index,
  122.                       self.power == other.power,
  123.                       self.copies >= other.copies]):
  124.                 return True
  125.             elif self == other:
  126.                 return True
  127.             else:
  128.                 return False
  129.         except AttributeError:
  130.             return True
  131.  
  132.     def __add__(self, other):
  133.         if other == 0:
  134.             return self
  135.         elif all([InitialOrdinal(self.index) == InitialOrdinal(other.index),
  136.                   self.power == other.power]):
  137.             return Omega(self.index, self.power, self.copies+other.copies)        
  138.         elif self < other:
  139.             return other
  140.         elif self == other:
  141.             copies = self.copies * 2
  142.             return Omega(self.index, self.power, copies)
  143.         elif self > other:
  144.             print("an ordinal object will be returned here")
  145.  
  146.     def __mul__(self, other):
  147.         if self < other:
  148.             return other
  149.         elif self == other:
  150.             return Omega(self.index, self.power + other.power)
  151.         elif self > other:
  152.             return Omega(self.index, self.power, self.copies * other)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement