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

পাইথনে স্ট্রিং পরিবর্তনের পর চূড়ান্ত অবস্থা

ধরি আমাদের কাছে একটি স্ট্রিং S আছে। দৈর্ঘ্য n। এই nটি বক্স পরস্পর সংলগ্ন, পজিশন i-এ 'R' থাকলে i-তম বক্স ডান দিকে ধাক্কা দেওয়া হচ্ছে। একইভাবে 'L' বাম দিকে ধাক্কা দেওয়া বোঝায়, '.' খালি স্থান বোঝায়। প্রাথমিক কনফিগারেশন থেকে শুরু করে, প্রতিটি টাইম ইউনিটে, ডান দিকে ধাক্কা খাওয়া একটি বক্স পরবর্তী বক্সকে ডান দিকে ধাক্কা দিতে পারে, বাম দিকের জন্যও একই কাজ প্রযোজ্য। যখন আর কোনো মুভমেন্ট সম্ভব নয় তখন সব বক্সের চূড়ান্ত পজিশন খুঁজে বের করতে হবে।

উদাহরণ

ইনপুট: R..R...L.

আউটপুট: RRRRR.LL.

সমাধানের ধাপসমূহ

  1. N := স্ট্রিংয়ের আকার
  2. movement := আকার N-এর অ্যারে, 0 দিয়ে পূরণ করা
  3. m := 0
  4. i = 0 থেকে N-1 পর্যন্ত লুপ:
    • যদি string[i] == 'R', তবে m := N
    • অন্যথায় যদি string[i] == 'L', তবে m := 0
    • অন্যথায় m := max(m - 1, 0)
    • movement[i] := movement[i] + m
  5. m := 0
  6. i = N-1 থেকে 0 পর্যন্ত উল্টো লুপ:
    • যদি string[i] == 'L', তবে m := N
    • অন্যথায় যদি string[i] == 'R', তবে m := 0
    • অন্যথায় m := max(m - 1, 0)
    • movement[i] := movement[i] - m
  7. movement-এর প্রতিটি উপাদান m এর জন্য: m == 0 হলে '.', m > 0 হলে 'R', অন্যথায় 'L' যোগ করে স্ট্রিং তৈরি করুন।

পাইথন কোড উদাহরণ

def get_final_pos(string):
    N = len(string)
    movement = [0] * N
    m = 0
    for i in range(0, N):
        if string[i] == 'R':
            m = N
        elif string[i] == 'L':
            m = 0
        else:
            m = max(m - 1, 0)
        movement[i] += m
    m = 0
    for i in range(N - 1, -1, -1):
        if string[i] == 'L':
            m = N
        elif string[i] == 'R':
            m = 0
        else:
            m = max(m - 1, 0)
        movement[i] -= m
    return "".join('.' if m == 0 else 'R' if m > 0 else 'L' for m in movement)

print(get_final_pos('R..R...L.'))

ইনপুট

'R..R...L.'

আউটপুট

RRRRR.LL.
  1. পাইথনে স্ট্রিং প্যাংগ্রাম (Pangram) কিনা চেক করা

  2. পাইথনে অপরিবর্তনশীল স্ট্রিং-এর আইডি পরিবর্তন করা

  3. পাইথনে স্ট্রিং-এর দৈর্ঘ্য পাওয়া

  4. পাইথন স্ট্রিং মাস্টার করুন: অপরিহার্য অপারেশন ও সেরা অনুশীলন