मान लीजिए कि हमारे पास एक लोअरकेस स्ट्रिंग s है और पूर्णांकों की एक और सूची है जिसे शिफ्ट कहा जाता है जिसकी लंबाई s की लंबाई के समान है। यहां पाली में प्रत्येक तत्व [i] यह इंगित करता है कि यह पहले i + 1 अक्षरों को पाली [i] पदों से स्थानांतरित करता है। यदि स्थानांतरण 'z' को पार करता है तो इसे 'a' तक लपेटा जाएगा। हमें s पर शिफ्ट लागू करने के बाद परिणामी स्ट्रिंग को खोजना होगा।
इसलिए, यदि इनपुट s ="टमाटर" शिफ्ट =[2, 5, 2, 3, 7, 4] जैसा है, तो आउटपुट "qjcoes" होगा, इसलिए, पहले अक्षर 2 स्थानों को स्थानांतरित करने के बाद, यह 't' होगा ' से 'v', तो स्ट्रिंग "vomato" है, उसके बाद पहले दो अक्षर 5 स्थान। स्ट्रिंग अब "atmato" की तरह होगी, अंत में स्ट्रिंग "qjcoes" होगी।
इसे हल करने के लिए, हम इन चरणों का पालन करेंगे -
- प्रारंभ:="ए" का ASCII
- res :=s में प्रत्येक i के लिए (i - start) के ASCII की सूची
- i के लिए शिफ्ट के रेंज साइज में - 2 से 0, 1 से घटाएं
- शिफ्ट्स[i] :=शिफ्ट्स[i] + शिफ्ट्स[i + 1]
- i के लिए 0 से लेकर s-1 के आकार तक के लिए
- c :=(res[i] + shifts[i]) mod 26
- res[i] :=ASCII वाला वर्ण (c + start)
- अक्षरों को एक स्ट्रिंग में शामिल करें और वापस लौटें
उदाहरण
आइए बेहतर समझ पाने के लिए निम्नलिखित कार्यान्वयन देखें -
def solve(s, shifts): start = ord("a") res = [ord(i) - start for i in s] for i in range(len(shifts) - 2, -1, -1): shifts[i] += shifts[i + 1] for i in range(len(s)): c = (res[i] + shifts[i]) % 26 res[i] = chr(c + start) return "".join(res) s = "tomato" shifts = [2, 5, 2, 3, 7, 4] print(solve(s, shifts))
इनपुट
[2, 1], 3, 2
आउटपुट
qjcoes