Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Uncategorized category for How Much Gold by TovarischZhukov
from fractions import Fraction
from copy import deepcopy
METALS = {'gold':0, 'tin':1, 'iron':2, 'copper':3}
def det(data):
if len(data)==1:return data[0][0]
else:
retval=0
for i in range(len(data)):
new_data=[]
for el in data[1:]:
new_data.append([])
for j,val in enumerate(el):
if j!=i: new_data[-1].append(val)
retval+=data[0][i]*(-1)**i*det(new_data)
return retval
def checkio(data):
results=[1]
matrix=[[1,1,1,1]]
for key in data:
val1, val2=key.split("-")
matrix.append([])
results.append(data[key])
for i in range(4):
matrix[-1].append(int(i in [METALS[val1],METALS[val2]]))
r_matrix=deepcopy(matrix)
for i in range(4): r_matrix[i][0]=results[i]
return det(r_matrix)/det(matrix)
Feb. 3, 2016