Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Sequence Analyzer by Magu
from collections import deque
from string import ascii_uppercase as uc
def analyzer(seq: str) -> str:
st = ''; q1 = deque(list(uc)); q2 = deque(list(uc))
d1 = ord(seq[2]) - ord(seq[0]) if ord(seq[2]) >= ord(seq[0]) else ord(seq[2]) + 26 - ord(seq[0])
d2 = ord(seq[4]) - ord(seq[2]) if ord(seq[4]) >= ord(seq[2]) else ord(seq[4]) + 26 - ord(seq[2])
if d1 == d2:
d3 = ord(seq[3]) - ord(seq[1]) if ord(seq[2]) >= ord(seq[0]) else ord(seq[3]) + 26 - ord(seq[1])
q1.rotate(65 - ord(seq[-2])); q2.rotate(65 - ord(seq[-1]))
for i in range(6):
q1.rotate(-d1), q2.rotate(-d3)
st += q1[0] + q2[0]
else:
d1 = ord(seq[3]) - ord(seq[0]) if ord(seq[3]) >= ord(seq[0]) else ord(seq[3]) + 26 - ord(seq[0])
d2 = ord(seq[4]) - ord(seq[1]) if ord(seq[4]) >= ord(seq[1]) else ord(seq[4]) + 26 - ord(seq[1])
d3 = ord(seq[5]) - ord(seq[2]) if ord(seq[5]) >= ord(seq[2]) else ord(seq[5]) + 26 - ord(seq[2])
q1.rotate(65 - ord(seq[-3])); q2.rotate(65 - ord(seq[-2]))
q3 = deque(list(uc)); q3.rotate(65 - ord(seq[-1]))
for i in range(4):
q1.rotate(-d1), q2.rotate(-d2); q3.rotate(-d3)
st += q1[0] + q2[0] + q3[0]
return st
Oct. 7, 2024
Comments: