Need urgent help with the following Python Question - Revise the algorithm so that it only looks at each pair once and h

Business, Finance, Economics, Accounting, Operations Management, Computer Science, Electrical Engineering, Mechanical Engineering, Civil Engineering, Chemical Engineering, Algebra, Precalculus, Statistics and Probabilty, Advanced Math, Physics, Chemistry, Biology, Nursing, Psychology, Certifications, Tests, Prep, and more.
Post Reply
answerhappygod
Site Admin
Posts: 899603
Joined: Mon Aug 02, 2021 8:13 am

Need urgent help with the following Python Question - Revise the algorithm so that it only looks at each pair once and h

Post by answerhappygod »

Need urgent help with the following Python Question -
Revise the algorithm so that it only looks at each paironce and has an average run-time of ϴ(n). Put that code in thefunction below - the function just needs to return the integernumber of Total birthday pairs.
Suppose you record a list of birthdays for your classmates,recorded as month day tuples. An example is given below.
# The 2nd to last tuple needs the int(2) in it so that it isuniquely stored in memory compared to (2,8)# Under the hood Python 3.7 changed how these are stored so (2,8)and (2,8) are stored in the same location# and then the algorithm below doesn't work
dates =[(3,14),(2,8),(10,25),(5,17),(3,2),(7,25),(4,30),(8,7),(int(2),8),(1,22),(2,int(8))]
You read about the famous birthday problem and you becomeinterested in the number of pairs of classmates that share the samebirthday. Below is an algorithm you write to do this. (Note: the isoperator tests that two operands point to the same object)
def birthday_original(dates_list):count = 0
for person_a in dates_list:for person_b in dates_list:# Make sure we have different people
if person_a is person_b:continue
# Check both month and dayif person_a[0] == person_b[0] and person_a[1] == person_b[1]:count += 1# We counted each pair twice (e.g. jane-bob and bob-jane) so divideby 2:return count//2
birthday_original(dates)
3
You notice that your initial algorithm is inefficient inthat it counts each pair twice. For example, it will incrementcount once when person_a is Jane and person_b is Bob, and againwhen person_a is Bob and person_b is Jane.
Revise the algorithm so that it only looks at each paironce and has an average run-time of ϴ(n). Put that code in thefunction below - the function just needs to return the integernumber of Total birthday pairs.
Note: Your code needs to duplicate the functionality ofthe algorithm above. It is suggested that you make new dates listsand pass them to both functions to test that the results are thesame!
def birthday_count(dates_list):"""Returns the total number of birthday pairs in thedates_list"""
input code above ^
Join a community of subject matter experts. Register for FREE to view solutions, replies, and use search function. Request answer by replying!
Post Reply