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
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
|
#!/usr/bin/env python
def comma_join(arr):
return ', '.join(map(lambda i: str(i), arr))
def findMissing(source, target, output, explanation):
# convert the target into a map with each element as keys
targetMap = { x: 1 for x in target }
# see which elements in the source are not in the target
missing = []
for elem in source:
if not elem in targetMap:
missing.append(elem)
# format output explaining what we found
explanation += "\n(" + comma_join(source) + ") has "
explanation += str(len(missing))
explanation += ' member ' if len(missing) == 1 \
else ' members '
if (len(missing) > 0):
explanation += '(' + comma_join(missing) + ') '
output.append(set(missing))
explanation += 'missing from the array '
explanation += '(' + comma_join(target) + ')'
return explanation
def findSolution(arr1, arr2, output):
explanation = ''
explanation = findMissing(arr1, arr2, output, explanation)
explanation = findMissing(arr2, arr1, output, explanation)
return explanation
def solution(arr1, arr2):
print(f'Input: @arr1 = ({comma_join(arr1)})')
print(f' @arr2 = ({comma_join(arr2)})')
output = []
explanation = findSolution(arr1, arr2, output)
formatted_subarray = []
for subarray in output:
formatted_subarray.append('[' + comma_join(subarray) + ']')
print(f'Output: ({comma_join(formatted_subarray)})')
print(explanation)
print('Example 1:')
solution([1, 2, 3], [2, 4, 6])
print('\nExample 2:')
solution([1, 2, 3, 3], [1, 1, 2, 2])
|