CMU Coding Bootcamp
at main 1.3 kB view raw
1from typing import Sequence, TypeVar 2 3 4T = TypeVar("T", bound=str | float) 5 6 7def missingValue(L: Sequence[T], M: Sequence[T]) -> T | None: 8 """Return the missing value from one of the two sorted sequences.""" 9 if (not L) and M: 10 return M[0] 11 elif (not M) and L: 12 return L[0] 13 elif (not L) and (not M): 14 return None 15 L = sorted(L) 16 M = sorted(M) 17 larger = L if len(L) > len(M) else M 18 smaller = L if len(L) < len(M) else M 19 for i in range(len(larger)): 20 a = larger[i] 21 if i > (len(smaller) - 1): 22 return a 23 b = smaller[i] 24 if a != b: 25 return larger[i] 26 return None 27 28 29print("Testing missingValue()...", end="") 30assert missingValue([1, 2, 3], [3, 1]) == 2 31assert missingValue([1, 2, 3], [2, 1]) == 3 32assert missingValue(["A", "B", "A", "C"], ["C", "A", "B"]) == "A" 33assert missingValue(["A", "B", "A", "C"], ["A", "A", "B"]) == "C" 34assert missingValue(["A", "B", "A", "C"], ["A", "C", "A"]) == "B" 35assert missingValue([2, 2], [2]) == 2 36assert missingValue([2, 3], [2]) == 3 37assert missingValue([2, 3], [3]) == 2 38assert missingValue(["amazing"], []) == "amazing" 39 40# Make sure the function is non-mutating 41L = [1, 2, 3] 42M = [3, 1] 43assert missingValue(L, M) == 2 44assert L == [1, 2, 3] 45assert M == [3, 1] 46print("Passed!")