সমস্যা বিবরণ
০ থেকে ২³¹-১ পর্যন্ত যেকোনো সংখ্যাকে ইংরেজি শব্দে রূপান্তর করুন।
উদাহরণ
512 → "Five Hundred Twelve"
7835271 → "Seven Million Eight Hundred Thirty Five Thousand Two Hundred Seventy One"
এলগরিদম
- ৩টি লিস্ট:
less_than_20(১-১৯),tens(২০,৩০...৯০),thousands(Thousand, Million, Billion)। helper(n)ফাংশন:- n=0 → ""
- n<20 →
less_than_20[n] - n<100 →
tens[n//10] + " " + helper(n%10) - অন্যথায় →
less_than_20[n//100] + " Hundred " + helper(n%100)
- মূল ফাংশনে ১০০০-এর গোষ্ঠী করে প্রক্রিয়া করুন।
পাইথন বাস্তবায়ন
class Solution:
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) + self.thousands[i] + " " + ans
num //= 1000
i += 1
return ans.strip()
def helper(self, n):
if n == 0:
return ""
elif n < 20:
return self.less_than_20[n] + " "
elif n < 100:
return self.tens[n//10] + " " + self.helper(n % 10)
else:
return self.less_than_20[n//100] + " Hundred " + self.helper(n % 100)
ob = Solution()
print(ob.numberToWords(512)) # Five Hundred Twelve
print(ob.numberToWords(7835271)) # Seven Million Eight Hundred Thirty Five Thousand Two Hundred Seventy One
ইনপুট / আউটপুট
ইনপুট: 512, 7835271 আউটপুট: Five Hundred Twelve / Seven Million Eight Hundred Thirty Five Thousand Two Hundred Seventy One