Skip to content

Instantly share code, notes, and snippets.

@daragao
Created November 8, 2018 18:35
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save daragao/f207b295d96a0f398d96937aa55d53a2 to your computer and use it in GitHub Desktop.
Save daragao/f207b295d96a0f398d96937aa55d53a2 to your computer and use it in GitHub Desktop.
Gold mine proble hackerrank
def mining(k, mines):
n = len(mines)
#create matrix
matrix = []
for i in range(n):
row = []
distance_i = mines[i][0]
weight_i = mines[i][1]
for j in range(n):
distance_j = mines[j][0]
cost = abs(distance_i - distance_j) * weight_i
row.append(cost)
matrix.append(row)
#find best k intersection of arrays
matrixT = transpose(matrix)
minSum, minSumArr = minSumOfArrays([matrixT[1],matrixT[4]])
print('MinSum: ' + str(minSum) + ' ' + str(minSumArr))
permutations([1,2,3,4,5,6,7,8,9,10],3)
# row and col cost
row_cost = [0 for _ in range(n)]
col_cost = [0 for _ in range(n)]
for i in range(n):
for j in range(n):
col_cost[j] += matrix[i][j]
row_cost[i] += matrix[i][j]
printMatrix(matrix)
printMatrix(transpose(matrix))
print(row_cost)
print(col_cost)
return min(col_cost)
def permutations(arr, k):
n = len(arr)
result = []
start = 0
for j in range(k):
for i in range(k):
for idx in range(n*j,(n*j)+n ):
arrIdx = (idx + start) % n
el = arr[arrIdx]
if len(result) <= idx:
result.append([])
result[idx].append(el)
start += 1
start += 1
for r in result:
print(r)
return result
def transpose(m):
return [[m[j][i] for j in range(len(m))] for i in range(len(m[0]))]
def minSumOfArrays(matrix):
matrix = transpose(matrix)
result = []
resultSum = 0
for row in matrix:
minVal = min(row)
resultSum += minVal
result.append(minVal)
return resultSum, result
def printMatrix(matrix):
strMatrix = ''
for row in matrix:
strMatrix += '[ ' + '\t'.join([ ("%.3d" % el) for el in row]) + ' ]\n'
print(strMatrix)
if __name__ == '__main__':
n, k = raw_input().split(' ')
mines = []
for _ in range(int(n)):
x, w = raw_input().split(' ')
mines.append([int(x),int(w)])
result = mining(k, mines)
print(result)
@daragao
Copy link
Author

daragao commented Nov 8, 2018

WIP

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment