fork download
  1. # your code goes here
  2. def median(arr1, arr2):
  3. def helper(arr1, arr2, l1, h1, l2, h2):
  4. print(arr1, arr2, l1, h1, l2, h2, arr1[l1:h1+1], arr2[l2:h2+1])
  5. if max(h1-l1, 0) + max(h2-l2, 0) <= 0:
  6. return min(arr1[l1:h1+1] + arr2[l2:h2+1])
  7. print(f'test values: {arr1[l1:l1+1]} < {arr2[l2:l2+1]} = {arr1[l1:l1+1] < arr2[l2:l2+1]}, {arr1[h1:h1+1]} > {arr2[h2:h2+1]} = {arr1[h1:h1+1] > arr2[h2:h2+1]}')
  8. if arr1[l1:l1+1] < arr2[l2:l2+1] or len(arr2[l2:l2+1]) == 0:
  9. if arr1[h1:h1+1] > arr2[h2:h2+1] or len(arr2[h2:h2+1]) == 0:
  10. return helper(arr1, arr2, l1+1, h1-1, l2, h2)
  11. else:
  12. return helper(arr1, arr2, l1+1, h1, l2, h2-1)
  13. else:
  14. if arr2[h2:h2+1] > arr1[h1:h1+1] or len(arr1[h1:h1+1]) == 0:
  15. return helper(arr1, arr2, l1, h1, l2+1, h2-1)
  16. else:
  17. return helper(arr1, arr2, l1, h1-1, l2+1, h2)
  18.  
  19. return helper(arr1, arr2, 0, len(arr1)-1, 0, len(arr2)-1)
  20.  
  21. median([1, 2, 3, 4, 12], [0, 7, 8, 11])
Success #stdin #stdout 0.04s 9692KB
stdin
Standard input is empty
stdout
[1, 2, 3, 4, 12] [0, 7, 8, 11] 0 4 0 3 [1, 2, 3, 4, 12] [0, 7, 8, 11]
test values: [1] < [0] = False, [12] > [11] = True
[1, 2, 3, 4, 12] [0, 7, 8, 11] 0 3 1 3 [1, 2, 3, 4] [7, 8, 11]
test values: [1] < [7] = True, [4] > [11] = False
[1, 2, 3, 4, 12] [0, 7, 8, 11] 1 3 1 2 [2, 3, 4] [7, 8]
test values: [2] < [7] = True, [4] > [8] = False
[1, 2, 3, 4, 12] [0, 7, 8, 11] 2 3 1 1 [3, 4] [7]
test values: [3] < [7] = True, [4] > [7] = False
[1, 2, 3, 4, 12] [0, 7, 8, 11] 3 3 1 0 [4] []