HackerRank Python Solution - Closures and Decorators - Standardize Mobile Number Using Decorators

  • Let's dive into decorators! You are given N mobile numbers. Sort them in ascending order then print them in the standard format shown below:
+91 xxxxx xxxxx
  • The mobile numbers may have +91, 91, or 0 written before the actual 10-digit number. Alternatively, there may not be any prefix at all.
Input Format:
  • The first input line contains an integer N, the number of mobile phone numbers. N lines follow each having a mobile number.
Output Format:
  • Print N mobile numbers on separate lines in the required format.
Sample Input:

3
07895462130
919875641230
9195969878
Sample Output:

+91 78954 62130
+91 91959 69878
+91 98756 41230
Concept:
  • To solve the above question, make a list of the mobile numbers and pass it to a function that sorts the array in ascending order. Make a decorator that standardizes the mobile numbers and applies them to the function.
Solution:

import re

def wrapper(f):
    def fun(l):
        decorated_l = ['+91 {} {}'.format(n[-10: -5], n[-5:]) for n in l]
        return f(decorated_l)
    return fun

@wrapper
def sort_phone(l):
    print(*sorted(l), sep='\n')

if __name__ == '__main__':
    l = [input() for _ in range(int(input()))]
    sort_phone(l) 
Note: The problem statement is given by hackerrank.com but the solution is generated by the Geek4Tutorial admin. We highly recommend you solve this on your own, however, you can refer to this in case of help. If there is any concern regarding this post or website, please contact us using the contact form. Thank you!

No comments:

Post a Comment

You might also like

Deploy your Django web app to Azure Web App using App Service - F1 free plan

In this post, we will look at how we can deploy our Django app using the Microsoft Azure app service - a free plan. You need an Azure accoun...