aboutsummaryrefslogtreecommitdiff
path: root/challenge-242/packy-anderson/python/ch-1.py
blob: 8126d38ebfd04d4d1a2e46f69ed039b77ed63634 (plain)
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])