কম্পিউটার টিউটোরিয়াল

পাইথনে শিফট অপারেশন দিয়ে ফাইনাল স্ট্রিং বের করা

একটি লোয়ারকেস স্ট্রিং s এবং শিফট অ্যারে shifts দেওয়া আছে। shifts[i] মানে প্রথম i+1টি ক্যারেক্টারকে shifts[i] পজিশন শিফট করা। 'z' এর পরে 'a'-তে র‍্যাপ হবে।

ইনপুট উদাহরণ

s = "tomato"
shifts = [2, 5, 2, 3, 7, 4]

আউটপুট: "qjcoes"

অ্যালগরিদম

  1. প্রতিটি ক্যারেক্টারের ASCII ভ্যালু 0-25 রেঞ্জে কনভার্ট করুন।
  2. shifts অ্যারে রিভার্স ক্যুমুলেটিভ সম করুন (তाकি প্রতিটি পজিশনের টোটাল শিফট পাওয়া যায়)।
  3. প্রতিটি ক্যারেক্টারে শিফট অ্যাপ্লাই করে মডুলো ২৬ নিন।

পাইথন কোড

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:])।

  1. পাইথনে দেওয়া ইনডেক্স অনুযায়ী স্ট্রিং শাফল করার প্রোগ্রাম

  2. পাইথনে দুটি স্ট্রিং থেকে অনন্য ক্যারেক্টার নিয়ে নতুন স্ট্রিং তৈরি

  3. পাইথনে স্ট্রিং নাম্বার প্যালিনড্রোম কিনা চেক করা

  4. পাইথন প্রোগ্রাম: সেট ব্যবহার করে স্ট্রিং-এ স্বরবর্ণ (vowel) গণনা