Advertisement
Catsher

codes_1

May 22nd, 2024
807
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.87 KB | None | 0 0
  1. class Symbol:
  2.     def __init__(self, c: str) -> None:
  3.         if c not in ['0', '1']:
  4.             raise Exception("Не входит в поле")
  5.         self.symbol = c
  6.  
  7.     def __add__(a, b):
  8.         if not isinstance(b, Symbol):
  9.             raise Exception("Нельзя складывать символ и невесть что")
  10.        
  11.         a_i = int(a.symbol)
  12.         b_i = int(b.symbol)
  13.  
  14.         return Symbol(str((a_i + b_i) % 2))
  15.  
  16. class CodeVector:
  17.     def __init__(self, symbols: list[Symbol]) -> None:
  18.         self.symbols: list[Symbol] = symbols
  19.  
  20.     def __str__(self) -> str:
  21.         return " ".join([s.symbol for s in self.symbols])
  22.    
  23.     def from_string(s: str) -> "CodeVector":
  24.         return CodeVector(symbols=[Symbol(c=c) for c in s])
  25.    
  26.     def __getitem__(obj, k):
  27.         if not isinstance(k, int):
  28.             raise Exception("Неправильная индексация")
  29.        
  30.         return obj.symbols[k]
  31.    
  32.  
  33. def inf_vector_to_code(v: CodeVector) -> CodeVector:
  34.     summ0: Symbol = v[0] + v[1] + v[3] + v[4] + v[6] + v[8] + v[10]
  35.     summ1: Symbol = v[0] + v[2] + v[3] + v[4] + v[5] + v[9] + v[10]
  36.     summ2: Symbol = v[1] + v[2] + v[3] + v[7] + v[8] + v[10] + v[10]
  37.     summ3: Symbol = v[4] + v[5] + v[6] + v[7] + v[8] + v[9] + v[10]
  38.  
  39.     p0 = Symbol('0') if summ0.symbol == '0' else Symbol('1')
  40.     p1 = Symbol('0') if summ1.symbol == '0' else Symbol('1')
  41.     p2 = Symbol('0') if summ2.symbol == '0' else Symbol('1')
  42.     p3 = Symbol('0') if summ3.symbol == '0' else Symbol('1')
  43.  
  44.     final_string: str = f"{p0.symbol}{p1.symbol}{v[0].symbol}{p2.symbol}{v[1].symbol}{v[2].symbol}{v[3].symbol}{p3.symbol}{v[4].symbol}{v[5].symbol}{v[6].symbol}{v[7].symbol}{v[8].symbol}{v[9].symbol}{v[10].symbol}"
  45.     return CodeVector.from_string(final_string)
  46.  
  47. inf_v = CodeVector.from_string("10001010111")
  48. print(inf_vector_to_code(inf_v))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement