Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
Domino Chain solution in Clear category for Domino Chain by JimmyCarlos
def domino_chain(dominoes):
chains_found = iterate([domino.split("-") for domino in dominoes.split(", ")],[])
return len({min(x,x[::-1]) for x in chains_found})
def iterate(dominoes_left,current_chain):
if len(dominoes_left) == 0: return {tuple(current_chain)}
paths_found = set()
if len(current_chain) == 0:
for domino_index_to_place,domino_to_place in enumerate(dominoes_left):
paths_found |= iterate([v for i,v in enumerate(dominoes_left) if i != domino_index_to_place],domino_to_place)
paths_found |= iterate([v for i,v in enumerate(dominoes_left) if i != domino_index_to_place],domino_to_place[::-1])
else:
for domino_index_to_place,domino_to_place in enumerate(dominoes_left):
if domino_to_place[0] == current_chain[-1]:
paths_found |= iterate([v for i,v in enumerate(dominoes_left) if i != domino_index_to_place],current_chain+[domino_to_place[1]])
if domino_to_place[1] == current_chain[-1]:
paths_found |= iterate([v for i,v in enumerate(dominoes_left) if i != domino_index_to_place],current_chain+[domino_to_place[0]])
return paths_found
July 31, 2019