কম্পিউটার

পাইথনে রোমান থেকে পূর্ণসংখ্যা


ধরুন আমাদের কাছে রোমান আক্ষরিক আছে; আমাদের তাদের একটি পূর্ণসংখ্যাতে রূপান্তর করতে হবে। আমরা জানি রোমান সংখ্যা নিচের মত কিছু ভিন্ন চিহ্নে প্রতিনিধিত্ব করে −

৷ ৷
সংখ্যা মান
I 1
V 5
X 10
L 50
C 100
D 500
M 1000

আমরা যদি রোমান সংখ্যাগুলিকে ঘনিষ্ঠভাবে দেখি, তাহলে মনে হয় সংখ্যাটি 'II', তাই এটি 2, সেখানে দুটি 'I' একসাথে যোগ করা হয়েছে। XII এর জন্য, এটি 12, তাই এটি আসলে X + II =10 + 2 =12। 4 এর রোমান সংখ্যা IIII নয়, এটি IV। এটা একটু কঠিন।

  • এটিকে যথাক্রমে 4 এবং 9 করতে V(5) এবং X(10) এর আগে ব্যবহার করা যেতে পারে

  • যথাক্রমে 40 এবং 90 করতে L(50) এবং C(100) এর আগে X ক্যাব ব্যবহার করা হবে

  • যথাক্রমে 400 এবং 900 করতে D(500) এবং M(1000) এর আগে C ব্যবহার করা যেতে পারে।

এই ক্ষেত্রে, আমরা একটি রোমান থেকে পূর্ণসংখ্যা রূপান্তরকারী তৈরি করব, যেটি 1 থেকে 3999 নম্বরগুলিকে রূপান্তর করতে পারে৷

এটি সমাধান করার জন্য, আমরা কিছু সম্ভাব্য সংখ্যা এবং তাদের মান এবং 4, 9, 40, 90, 400, 900 এর মতো কিছু বিশেষ মান তৈরি করব। এখন প্রদত্ত স্ট্রিংটি স্ক্যান করব, যদি টেবিলে কিছু সাবস্ট্রিং উপস্থিত থাকে তবে তার মান নিন। ফলাফল, তারপর পরের জন্য পরীক্ষা করুন, পরবর্তী ম্যাচের জন্য, এটি ফলাফলের সাথে মান যোগ করে, অবশেষে সংখ্যা গঠন করে।

আরো ভালোভাবে বোঝার জন্য বাস্তবায়ন দেখি

উদাহরণ (পাইথন)

class Solution(object):
   def romanToInt(self, s):
      """
      :type s: str
      :rtype: int
      """
      roman = {'I':1,'V':5,'X':10,'L':50,'C':100,'D':500,'M':1000,'IV':4,'IX':9,'XL':40,'XC':90,'CD':400,'CM':900}
      i = 0
      num = 0
      while i < len(s):
         if i+1<len(s) and s[i:i+2] in roman:
            num+=roman[s[i:i+2]]
            i+=2
         else:
            #print(i)
            num+=roman[s[i]]
            i+=1
      return num
ob1 = Solution()
print(ob1.romanToInt("III"))
print(ob1.romanToInt("CDXLIII"))

ইনপুট

"III"
"CDXLIII"

আউটপুট

3
443

  1. পাইথন ভাষায় স্পষ্ট টাইপ কাস্টিং

  2. bin() পাইথনে

  3. পাইথনে ফ্লোটকে পূর্ণসংখ্যাতে কীভাবে রূপান্তর করবেন?

  4. পাইথনে একটি পূর্ণসংখ্যাকে একটি অক্ষরে কীভাবে রূপান্তর করবেন?