কম্পিউটার

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


ধরুন আমাদের একটি সংখ্যা সংখ্যা আছে। আমাদের এটিকে এর সমতুল্য রোমান সংখ্যায় রূপান্তর করতে হবে। রোমান সংখ্যায় নিচের মত চিহ্ন এবং মান থাকে −

  • "I" =1
  • "V" =5
  • "X" =10
  • "L" =50
  • "C" =100
  • "D" =500
  • "M" =1000

এই চিহ্নগুলি সাধারণত সবচেয়ে বড় থেকে ছোট এবং বাম থেকে ডানে লেখা হয় এবং সমস্ত চিহ্নের মানগুলি যোগ করে গণনা করা যেতে পারে। কিন্তু কিছু বিশেষ ক্ষেত্রে আছে, যেখানে নিম্ন মানের একটি চিহ্ন উচ্চতর মানের প্রতীকের বাম দিকে থাকে, তার ইঙ্গিত হয় উচ্চতর থেকে নিম্ন মান বিয়োগ করা হয়েছে।

এই ধরনের ক্ষেত্রে উদাহরণ -

  • "I" হল "V" এর আগে, মান 4।
  • "I" এর আগে "X", মান 9।
  • "X" হল "L" এর আগে, মান 40।
  • "X" হল "C" এর আগে, মান 90।
  • "C" হল "D" এর আগে, মান 400।
  • "C" হল "M" এর আগে, মান 900।

রোমান সংখ্যায়ও কিছু নিয়ম আছে −

  • কোনও প্রতীক 3 বারের বেশি পুনরাবৃত্তি হয় না।
  • চিহ্নগুলি "V", "L", এবং "D" পুনরাবৃত্তি হয় না।

সুতরাং, যদি ইনপুট n =1520 এর মত হয়, তাহলে আউটপুট হবে "MDXX", কারণ "MDXX" 1000 + 500 + 10 + 10 =1520 নির্দেশ করে।

এটি সমাধান করতে, আমরা এই পদক্ষেপগুলি অনুসরণ করব -

  • res :=ফাঁকা স্ট্রিং
  • টেবিল =এই বিন্যাসে জোড়া (ভাল, চিহ্ন) সম্বলিত একটি তালিকা, যেখানে ভ্যাল হল মান এবং চিহ্ন হল সংশ্লিষ্ট চিহ্ন [(1000, "M"), (900, "CM"), (500, " D"), (400, "CD"), (100, "C"), (90, "XC"), (50, "L"), (40, "XL"), (10, "X" ), (9, "IX"), (5, "V"), (4, "IV"), (1, "I")]
  • সারণীতে প্রতিটি জোড়ার (ক্যাপ, রোমান) জন্য, করুন
    • d :=নম্বর/ক্যাপের তল
    • m :=num mod cap
    • res :=res + roman * d
    • সংখ্যা :=মি
  • রিটার্ন রিটার্ন

উদাহরণ

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

def solve(num):
   res = ""
   table = [
      (1000, "M"),
      (900, "CM"),
      (500, "D"),
      (400, "CD"),
      (100, "C"),
      (90, "XC"),
      (50, "L"),
      (40, "XL"),
      (10, "X"),
      (9, "IX"),
      (5, "V"),
      (4, "IV"),
      (1, "I"),
   ]
   for cap, roman in table:
      d, m = divmod(num, cap)
      res += roman * d
      num = m

   return res

num = 1520
print(solve(num))

ইনপুট

1520

আউটপুট

MDXX

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

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

  3. পাইথনে কিভাবে একটি পূর্ণসংখ্যাকে একটি ASCII মানতে রূপান্তর করবেন?

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