কম্পিউটার

পাইথনে ইংরেজি শব্দ থেকে পূর্ণসংখ্যা


ধরুন আমাদের একটি নম্বর আছে। সংখ্যাটি 0 থেকে 231 – 1 এর মধ্যে যেকোনো কিছু হতে পারে। আমাদের সংখ্যাটিকে শব্দে রূপান্তর করতে হবে। সুতরাং সংখ্যাটি যদি 512 এর মত হয়, তাহলে ফলাফল হবে পাঁচশ বারো।

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

  • less_than_20 এর মত কিছু তালিকা সংজ্ঞায়িত করুন, এটি এক থেকে উনিশ পর্যন্ত সকল শব্দ ধারণ করবে

  • দশ, বিশ, ত্রিশ এবং নব্বই পর্যন্ত ধরে রাখতে দশের মতো আরেকটি অ্যারে

  • হাজার, মিলিয়ন এবং বিলিয়ন ধরে রাখার জন্য হাজার হাজারের জন্য আরেকটি অ্যারে

  • Helper() নামে একটি ফাংশন সংজ্ঞায়িত করুন, এটি n

    নেবে
  • যদি n 0 হয়, তাহলে ফাঁকা স্ট্রিং ফেরত দিন

  • অন্যথায় যখন n <20, তারপর কম_than_20[n] + ফাঁকা স্থান ফেরত দিন

  • অন্যথায় যখন n <100, তারপর টেন [n/10] + ফাঁকা স্থান + সাহায্যকারী(n mod 10)

  • অন্যথায় কম_থান_২০[n/100] + "শত" + সাহায্যকারী(n mod 100)

  • মূল পদ্ধতি থেকে, নিম্নলিখিতগুলি করুন

  • যদি সংখ্যা 0 হয়, তাহলে “শূন্য”

    ফেরত দিন
  • উত্তর :=খালি স্ট্রিং, i :=0

  • যখন সংখ্যা> 0

    • যদি num mod 1000 0 না হয়, তাহলে

      • উত্তর :=সাহায্যকারী(সংখ্যা মোড 1000) + হাজার[i] + ফাঁকা স্থান + উত্তর

      • সংখ্যা :=সংখ্যা / 1000

  • উত্তর ফেরত দিন

উদাহরণ

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

class Solution(object):
   less_than_20 = ["", "One", "Two", "Three", "Four", "Five", "Six", "Seven", "Eight", "Nine", "Ten", "Eleven", "Twelve", "Thirteen", "Fourteen", "Fifteen", "Sixteen", "Seventeen", "Eighteen",
"Nineteen"]
   tens = ["","Ten", "Twenty", "Thirty", "Forty", "Fifty", "Sixty", "Seventy", "Eighty", "Ninety"]
   thousands = ["", "Thousand", "Million", "Billion"]
   def numberToWords(self, num):
      if num == 0:
         return "Zero"
      ans = ""
      i = 0
      while num > 0:
         if num % 1000 != 0:
            ans = self.helper(num % 1000) + Solution.thousands[i] + " " + ans
         i += 1
         num //= 1000
      return ans.strip()
   def helper(self, n):
      if n == 0:
         return ""
      elif n < 20:
         return Solution.less_than_20[n] + " "
      elif n < 100:
         return Solution.tens[n//10] + " " + self.helper(n % 10)
      else:
         return Solution.less_than_20[n // 100] + " Hundred " + self.helper(n % 100)

ob = Solution()
print(ob.numberToWords(512))
print(ob.numberToWords(7835271))

ইনপুট

512
7835271

আউটপুট

Five Hundred Twelve
Seven Million Eight Hundred Thirty Five Thousand Two Hundred Seventy One

  1. পাইথনে বিপরীত পূর্ণসংখ্যা

  2. পাইথনে পূর্ণসংখ্যার বাইনারি তালিকা

  3. পাইথনে একটি প্রদত্ত স্ট্রিং-এর বিপরীত শব্দ

  4. bin() পাইথনে