daily log 12.08.20

1 minute read

UJS: Find Missing Number in array

In english

  1. if midpoint is less than array[midpoint]
  2. GO LEFT (end becomes midpoint)
  3. if midpoint == array[midpoint] AND start - end > 1
  4. GO RIGHT (start becomes midpoint)
  5. if start - end == 1
  6. and start == array[start]
  7. missing number is array[start] + 1
def find_missing_number(array):
    start = 0
    end = len(array)
    
    while end - start > 1:
        midpoint = int((start+end)/2) if (start+end)%2==0 else int((start+end+1)/2)
        if midpoint < array[midpoint]:
            end = midpoint
        if midpoint == array[midpoint]:
            start = midpoint
    
    return array[start] + 1

# test = [0, 1, 2, 3, 4, 5, 6, 7, 8, 10]
test = [0, 2, 3, 4, 5, 6, 7, 8, 9, 10]
find_missing_number(test)    

PE #7: Largest product in a series

My notes

  1. make every possible grouping of 4
  2. get every possible grouping of 4s product.
  3. Find the max product

===== BRUTE FORCE FIRST

Test problem

long_num = "7316717653133062491922511967442657474235534919493496983520312774506326239578318016984801869478851843858615607891129494954595017379583319528532088055111254069874715852386305071569329096329522744304355766896648950445244523161731856403098711121722383113622298934233803081353362766142828064444866452387493035890729629049156044077239071381051585930796086670172427121883998797908792274921901699720888093776657273330010533678812202354218097512545405947522435258490771167055601360483958644670632441572215539753697817977846174064955149290862569321978468622482839722413756570560574902614079729686524145351004748216637048440319989000889524345065854122758866688116427171479924442928230863465674813919123162824586178664583591245665294765456828489128831426076900422421902267105562632111110937054421750694165896040807198403850962455444362981230987879927244284909188845801561660979191338754992005240636899125607176060588611646710940507754100225698315520005593572972571636269561882670428252483600823257530420752963450"
max_product = 0
for i, num in enumerate(long_num):
    try:
        temp_product = int(num) * int(long_num[i+1]) * int(long_num[i+2]) * int(long_num[i+3])
        if temp_product > max_product:
            max_product = temp_product
    except:
        print(i)

Actual problem

max_product = 0
for i, num in enumerate(long_num):
    try:
        temp_product = int(num) *int(long_num[i + 1]) *int(long_num[i + 2]) *int(long_num[i + 3]) *int(long_num[i + 4]) *int(long_num[i + 5]) *int(long_num[i + 6]) *int(long_num[i + 7]) *int(long_num[i + 8]) *int(long_num[i + 9]) *int(long_num[i + 10]) *int(long_num[i + 11]) *int(long_num[i + 12])
        if temp_product > max_product:
            max_product = temp_product
    except:
        print(i)