Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import math
- class T52:
- def __init__(self, a, b, string):
- self.a = a
- self.b = b
- self.string = string
- self.m = len(string)
- self.afgesplitst = list(string)
- tijdelijk = []
- for x in self.afgesplitst:
- if x in tijdelijk:
- raise AssertionError("alfabet bevat herhaalde symbolen")
- else:
- tijdelijk.append(x)
- if math.gcd(a, self.m) != 1:
- raise AssertionError(f"{a} en {self.m} zijn niet copriem")
- def codeerSymbool(self, letter):
- if letter not in self.afgesplitst:
- return letter
- else:
- cijfer = (self.a * self.afgesplitst.index(letter) + self.b) % self.m
- nieuweletter = self.afgesplitst[cijfer]
- return nieuweletter
- def decodeerSymbool(self, letter):
- if letter not in self.afgesplitst:
- return letter
- else:
- result = ""
- for x in range(len(self.afgesplitst)):
- sommeke = (self.a * x) % self.m
- if sommeke == 1:
- eindIndex = x * (self.afgesplitst.index(letter) - self.b) % self.m
- return self.afgesplitst[eindIndex]
- def codeer(self, string):
- lijst = list(string)
- result = ""
- for x in lijst:
- result += self.codeerSymbool(x)
- return result
- def decodeer(self, string):
- lijst = list(string)
- result = ""
- for x in lijst:
- result += self.decodeerSymbool(x)
- return result
- def __add__(self, other):
- if self.string != other.string:
- raise AssertionError("alfabetten zijn verschillend")
- else:
- tijdelijk1 = self.codeer(self.string)
- tijdelijk2 = other.codeer(tijdelijk1)
- return tijdelijk2
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement