Vigenère cipher: ขยับตัวอักษรใน text ไปขวาตามตำแหน่งของตัวอักษรใน key (a=0, b=1,...) วนซ้ำ key ถ้าสั้นกว่า
ตัวอย่าง: text="code", key="team" → "vsdq"
อัลกอริธึม
- สำหรับแต่ละคู่ (l,k): shift = ord(k) - ord('a')
- new_pos = (ord(l) - ord('a') + shift) % 26 + ord('a')
การนำไปใช้
class Solution:
def solve(self, text, key):
cip = []
start = ord('a')
for l, k in zip(text, key):
shift = ord(k) - start
pos = start + (ord(l) - start + shift) % 26
cip.append(chr(pos))
return ''.join(cip)
ob = Solution()
print(ob.solve("code", "team")) # vsdq