Set Mutations in python - HackerRank Solution
Problem :
We have seen the applications of union, intersection, difference and symmetric difference operations, but these operations do not make any changes or mutations to the set.
We can use the following operations to create mutations to a set:
.update() or |=
Update the set by adding elements from an iterable/another set.
>>> H = set("Hacker") >>> R = set("Rank") >>> H.update(R) >>> print H set(['a', 'c', 'e', 'H', 'k', 'n', 'r', 'R'])
.intersection_update() or &=
Update the set by keeping only the elements found in it and an
iterable/another set.
>>> H = set("Hacker") >>> R = set("Rank") >>> H.intersection_update(R) >>> print H set(['a', 'k'])
Update the set by removing elements found in an iterable/another set.
>>> H = set("Hacker") >>> R = set("Rank") >>> H.difference_update(R) >>> print H set(['c', 'e', 'H', 'r'])
.symmetric_difference_update() or ^=
Update the set by only keeping the elements found in either set, but not in
both.
>>> H = set("Hacker") >>> R = set("Rank") >>> H.symmetric_difference_update(R) >>> print H set(['c', 'e', 'H', 'n', 'r', 'R'])
Task :
Your task is to execute those operations and print the sum of elements from
set A.
Input Format :
The second line contains the space separated list of elements in set A.
The third line contains integer N, the number of other sets.
The next 2* N lines are divided into N parts containing two lines each.
The first line of each part contains the space separated entries of the operation name and the length of the other set.
The second line of each part contains space separated list of elements in the
other set.
Constraints :
- 0 < len(set(A)) < 1000
- 0 < len(other_set) < 100
- 0 < N < 100
Output Format :
Output the sum of elements in set A.
Sample Input :
16 1 2 3 4 5 6 7 8 9 10 11 12 13 14 24 52 4 intersection_update 10 2 3 5 6 8 9 1 4 7 11 update 2 55 66 symmetric_difference_update 5 22 7 35 62 58 difference_update 7 11 22 35 55 58 62 66
Sample Output :
38
Explanation :
set A = set([1, 2, 3, 4, 5, 6, 7, 8, 9, 11])
After the second operation, (update operation), we get:
set A = set([1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 55, 66])
After the third operation, (symmetric_difference_update operation), we get:
set A = set([1, 2, 3, 4, 5, 6, 7, 8, 9, 11, 22, 35, 55, 58, 62, 66])
After the fourth operation, ( difference_update operation), we get:
set A = set([1, 2, 3, 4, 5, 6, 7, 8, 9])
The sum of elements in set A after these operations is 38.
Solution :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 | # Set Mutations in python - Hacker Rank Solution # python 3 # Enter your code here. Read input from STDIN. Print output to STDOUT # Set Mutations in python - Hacker Rank Solution START len_set = int(input()) storage = set(map(int, input().split())) op_len = int(input()) for i in range(op_len): operation = input().split() if operation[0] == 'intersection_update': temp_storage = set(map(int, input().split())) storage.intersection_update(temp_storage) elif operation[0] == 'update': temp_storage = set(map(int, input().split())) storage.update(temp_storage) elif operation[0] == 'symmetric_difference_update': temp_storage = set(map(int, input().split())) storage.symmetric_difference_update(temp_storage) elif operation[0] == 'difference_update': temp_storage = set(map(int, input().split())) storage.difference_update(temp_storage) else : assert False print(sum(storage)) # Set Mutations in python - Hacker Rank Solution END |
Disclaimer :-
the above hole problem statement is given by hackerrank.com but the solution is generated by the codeworld19 authority if any of the query regarding this post or website fill the following contact form thank you.
You could also write:
storage.__getattribute__(operation)(temp_storage)