একটি লোয়ারকেস স্ট্রিং s এবং শিফট অ্যারে shifts দেওয়া আছে। shifts[i] মানে প্রথম i+1টি ক্যারেক্টারকে shifts[i] পজিশন শিফট করা। 'z' এর পরে 'a'-তে র্যাপ হবে।
ইনপুট উদাহরণ
s = "tomato"
shifts = [2, 5, 2, 3, 7, 4]
আউটপুট: "qjcoes"
অ্যালগরিদম
- প্রতিটি ক্যারেক্টারের ASCII ভ্যালু
0-25রেঞ্জে কনভার্ট করুন। shiftsঅ্যারে রিভার্স ক্যুমুলেটিভ সম করুন (তाकি প্রতিটি পজিশনের টোটাল শিফট পাওয়া যায়)।- প্রতিটি ক্যারেক্টারে শিফট অ্যাপ্লাই করে মডুলো ২৬ নিন।
পাইথন কোড
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)) # qjcoes
ব্যাখ্যা
রিভার্স ক্যুমুলেটিভ সম নেওয়া হলো কী: shifts[i] প্রথম i+1 ক্যারেক্টারের ওপর অ্যাপ্লাই হয়, তাই i-তম ক্যারেক্টারের টোটাল শিফট = sum(shifts[i:])।