Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- # Mockvita Question 2 [Sorted Spell]
- # Author - Aman Vishwakarma [L1]
- # Utility function to convert number to strings
- def num2words(num,join=True):
- '''words = {} convert an integer number into words'''
- units = ['', 'one', 'two', 'three', 'four', 'five', 'six', 'seven', 'eight', 'nine']
- teens = ['', 'eleven', 'twelve', 'thirteen', 'fourteen', 'fifteen', 'sixteen', \
- 'seventeen', 'eighteen', 'nineteen']
- tens = ['', 'ten', 'twenty', 'thirty', 'forty', 'fifty', 'sixty', 'seventy', \
- 'eighty', 'ninety']
- thousands = ['', 'thousand', 'million', 'billion', 'trillion', 'quadrillion', \
- 'quintillion', 'sextillion', 'septillion', 'octillion', \
- 'nonillion', 'decillion', 'undecillion', 'duodecillion', \
- 'tredecillion', 'quattuordecillion', 'sexdecillion', \
- 'septendecillion', 'octodecillion', 'novemdecillion', \
- 'vigintillion']
- words = []
- if num == 0:
- words.append('zero')
- else:
- numStr = '%d' % num
- numStrLen = len(numStr)
- groups = (numStrLen + 2) // 3
- numStr = numStr.zfill(groups * 3)
- for i in range(0, groups * 3, 3):
- h, t, u = int(numStr[i]), int(numStr[i + 1]), int(numStr[i + 2])
- g = groups - (i / 3 + 1)
- if h >= 1:
- words.append(units[h])
- words.append('hundred')
- if t > 1:
- words.append(tens[t])
- if u >= 1: words.append(units[u])
- elif t == 1:
- if u >= 1:
- words.append(teens[u])
- else:
- words.append(tens[t])
- else:
- if u >= 1: words.append(units[u])
- if (g >= 1) and ((h + t + u) > 0): words.append(thousands[g] + ',')
- if join: return ' '.join(words)
- return words
- # Utility Function to give list of sorted spelling
- def sortedSpelling(numbers):
- spellings = []
- for number in numbers:
- spellings.append(num2words(number))
- spellings.sort()
- return spellings
- # Utility Function to give sorted spelling numbers
- def sortedSpellingNumbers(spellings,numbers):
- sortedNumbers = [0,0]
- for number in numbers:
- sortedNumbers[spellings.index(num2words(number))] = number
- return sortedNumbers
- # Main Driver Function
- def Driver(M,N):
- # Initial Sorting
- numberSortedList = [int(M),int(N)]
- numberSortedList.sort()
- # Initial Spelling Sorting
- spellingSortedList = sortedSpelling(numberSortedList)
- numberSpellSorted = sortedSpellingNumbers(spellingSortedList,numberSortedList)
- while numberSortedList[0] != numberSortedList[1] and numberSpellSorted[0] != numberSpellSorted[1]:
- if numberSortedList[0] > 99999 or numberSortedList[1] > 99999:
- print("Out of Bounds")
- exit(0)
- # Add numbers condition
- numberSortedList[0] = numberSortedList[0] + numberSpellSorted[0]
- numberSortedList[1] = numberSortedList[1] + numberSpellSorted[1]
- # Now Sort Above Numbers
- numberSpellSorted.sort()
- # Now Spelling Sorted
- spellingSortedList = sortedSpelling(numberSortedList)
- numberSpellSorted = sortedSpellingNumbers(spellingSortedList, numberSortedList)
- print(numberSortedList[0])
- # Take input from users
- N,M = input().split()
- Driver(M,N)
Add Comment
Please, Sign In to add comment