Decorators 2 Name Directory in Python HackerRank Solution

Hello Programmers, In this post, you will know how to solve the Decorators 2 Name Directory in Python HackerRank Solution. This problem is a part of the HackerRank Python Programming Series.

Decorators 2 Name Directory in Python HackerRank Solution
Decorators 2 Name Directory in Python HackerRank Solutions

One more thing to add, don’t directly look for the solutions, first try to solve the problems of Hackerrank by yourself. If you find any difficulty after trying several times, then you can look for solutions.

Decorators 2 Name Directory in Python Hacker Rank Solution

Problem

Let’s use decorators to build a name directory! You are given some information about N people. Each person has a first name, last name, age and sex. Print their names in a specific format sorted by their age in ascending order i.e. the youngest person’s name should be printed first. For two people of the same age, print them in the order of their input.
For Henry Davids, the output should be: 

Mr. Henry Davids

 For Mary George, the output should be: 

Ms. Mary George

Input Format :

The first line contains the integer N, the number of people.
N lines follow each containing the space separated values of the first name, last name, age and sex, respectively.  

Constraints :

  • 0 <= N <= 10

Output Format :

Output N names on separate lines in the format described above in ascending order of age. 

Sample Input :

3
Mike Thomson 20 M
Robert Bustle 32 M
Andria Bustle 30 F

Sample Output :

Mr. Mike Thomson
Ms. Andria Bustle
Mr. Robert Bustle

Concept :

For sorting a nested list based on some parameter, you can use the itemgetter library. You can read more about it here

Decorators 2 Name Directory in Python HackerRank Solutions

import operator
def person_lister(f):
    def inner(people):
        # Decorators 2 - Name Directory in Python - Hacker Rank Solution START
        # complete the function
        return map(f, sorted(people, key=lambda x: int(x[2])))
        # Decorators 2 - Name Directory in Python - Hacker Rank Solution END
    return inner
@person_lister
def name_format(person):
    return ("Mr. " if person[3] == "M" else "Ms. ") + person[0] + " " + person[1]
if __name__ == '__main__':
    people = [input().split() for i in range(int(input()))]
    print(*name_format(people), sep='\n')

Disclaimer: The above Problem (Decorators 2 – Name Directory in Python) is generated by Hackerrank but the Solution is Provided by BrokenProgrammers. This tutorial is only for Educational and Learning purposes.

Next: Words Score in Python HackerRank Solution

Leave a Reply

Your email address will not be published. Required fields are marked *