Advertisement
maxim_shlyahtin

5.1

Oct 31st, 2020
161
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 2.75 KB | None | 0 0
  1. from math import gcd
  2.  
  3.  
  4. class R:
  5.  
  6.     def __init__(self, m, n):
  7.         self._num = m
  8.         self._den = n
  9.  
  10.     def __add__(self, other):
  11.         nok = (self._den * other._den) // gcd(self._den, other._den)
  12.         tmp = self._num * (nok // self._den) + other._num * (nok // other._den)
  13.         return f'{tmp}/{nok}'
  14.  
  15.     def __sub__(self, other):
  16.         nok = (self._den * other._den) // gcd(self._den, other._den)
  17.         tmp = self._num * (nok // self._den) - other._num * (nok // other._den)
  18.         return f'{tmp}/{nok}'
  19.  
  20.     def get_ten(self):
  21.         return f'{self._num / self._den}'
  22.  
  23.     def __lt__(self, other):
  24.         nok = (self._den * other._den) // gcd(self._den, other._den)
  25.         if self._num * (nok // self._den) < other._num * (nok // other._den):
  26.             return f'{self._num}/{self._den}'
  27.  
  28.     def __gt__(self, other):
  29.         nok = (self._den * other._den) // gcd(self._den, other._den)
  30.         if self._num * (nok // self._den) > other._num * (nok // other._den):
  31.             return f'{self._num}/{self._den}'
  32.  
  33.     def __str__(self):
  34.         return f'{self._num}/{self._den}'
  35.  
  36.  
  37. f, f1, f2, f3, f4, f5 = R(9, 11), R(3, 4), R(5, 6), R(6, 7), R(7, 8), R(4, 5)
  38.  
  39.  
  40. class SetR:
  41.  
  42.     def __init__(self, *args):
  43.         self.list = list(args)
  44.  
  45.     def get_max(self):
  46.         return max(self.list)
  47.  
  48.     def get_min(self):
  49.         return min(self.list)
  50.  
  51.     def get_count_max(self, item):
  52.         p = self.list[self.list.index(item) + 1:]
  53.         return len(p)
  54.  
  55.     def get_count_min(self, item):
  56.         g = self.list[:self.list.index(item)]
  57.         return len(g)
  58.  
  59.     def __getitem__(self, item):
  60.         return self.list[item]
  61.  
  62.     def __setitem__(self, key, value):
  63.         self.list[key] = value
  64.         return self.list
  65.  
  66.     def __len__(self):
  67.         return len(self.list)
  68.  
  69.     def __str__(self):
  70.         l = [f'{self.list[i]}' for i in range(len(self.list))]
  71.         return '[' + ', '.join(l) + ']'
  72.  
  73.  
  74. s = SetR(f, f1, f3, f2, f5, f4)
  75. d = SetR(f1, f2, f3)
  76.  
  77.  
  78. class Polynom:
  79.  
  80.     def __init__(self, x):
  81.         self.x = x
  82.  
  83.     def __add__(self, other):
  84.         storage = []
  85.         if len(self.x) > len(other.x):
  86.             copy = self.x
  87.         else:
  88.             copy = other.x
  89.         for i in range(-min(len(self.x), len(other.x)), 0):
  90.             storage.append(self.x[i] + other.x[i])
  91.         for i in range(-len(storage), 0):
  92.             copy.__setitem__(i, storage[i])
  93.         l = [f'({copy[i]} * x**{len(copy) - i})' for i in range(len(copy))]
  94.         return ' + '.join(l)
  95.  
  96.     def __str__(self):
  97.         l = [f'({self.x[i]} * x**{len(self.x) - i})' for i in range(len(self.x))]
  98.         return ' + '.join(l)
  99.         # return f'{self.f}'
  100.  
  101.  
  102. x = Polynom(s)
  103. y = Polynom(d)
  104. print(x + y)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement