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

পাইথনে রোমান সংখ্যালিখনকে ইন্টিজারে রূপান্তর করার প্রোগ্রাম

ধরা যাক একটি রোমান সংখ্যালিখন (Roman numeral) দেওয়া আছে; আমাদের এটিকে ইন্টিজার সংখ্যায় রূপান্তর করতে হবে। রোমান সংখ্যালিখন বাম থেকে ডানে সবচেয়ে বড় থেকে ছোট মানের সিম্বল দিয়ে লেখা হয়, শুধু একটি ব্যতিক্রম রয়েছে—একটি সিম্বলের এক কম মান প্রকাশ করার সময়।

রোমান সিম্বল ও মান

  • 'M': 1000
  • 'D': 500
  • 'C': 100
  • 'L': 50
  • 'X': 10
  • 'V': 5
  • 'I': 1

উদাহরণ

ইনপুট: numeral = "MCLXVI"

আউটপুট: 1166

ব্যাখ্যা: M=1000, C=100 → 1100; L=50, X=10, VI=6 → 1166

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

  1. রোমান সিম্বল-মান ম্যাপ d তৈরি করুন
  2. ans := 0, n := numeral-এর দৈর্ঘ্য
  3. প্রতিটি ইন্ডেক্স idx এবং ক্যারেক্টার c এর জন্য numeral-এ:
    • যদি idx < n-1 এবং d[c] < d[numeral[idx+1]] হয়, তবে ans := ans - d[c]
    • অন্যথায়, ans := ans + d[c]
  4. ans ফেরত দিন

পাইথন ইমপ্লিমেন্টেশন

class Solution:
    def solve(self, numeral):
        d = {"M": 1000, "D": 500, "C": 100, "L": 50, "X": 10, "V": 5, "I": 1}
        ans = 0
        n = len(numeral)
        for idx, c in enumerate(numeral):
            if idx < n - 1 and d[c] < d[numeral[idx + 1]]:
                ans -= d[c]
            else:
                ans += d[c]
        return ans

ob = Solution()
numeral = "MCLXVI"
print(ob.solve(numeral))

ইনপুট

"MCLXVI"

আউটপুট

1166
  1. পাইথন প্রোগ্রাম কিলোমিটারকে মাইলে কনভার্ট করা

  2. হেক্সাডেসিমেল স্ট্রিংকে দশমিকে রূপান্তর করার পাইথন প্রোগ্রাম

  3. Python-এ ফ্লোটকে ইন্টিজার রূপান্তর করা

  4. Python-এ ইন্টিজারকে ক্যারেক্টার রূপান্তর করা