Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Clear category for Color Map by StanislauL
def color_map(region):
countries = set(region[0])
for x in region[1:]: countries|=set(x)
col_var = {x:{1,2,3,4} for x in countries}
neigh = {x:set() for x in countries}
size = len(region)
colours = [None]*len(countries)
for x in range(size):
for y in range(len(region[0])):
if y>0: neigh[region[x][y]].add(region[x][y-1])
if x>0: neigh[region[x][y]].add(region[x-1][y])
if x<(len(region)-1): neigh[region[x][y]].add(region[x+1][y])
if y<(len(region[0])-1): neigh[region[x][y]].add(region[x][y+1])
for x in neigh: neigh[x].discard(x)
return handler(list(countries), neigh, col_var, colours)
def handler(countries, neigh, col_var, colours):
curr = countries[0]
if not col_var[curr]: return False
for x in col_var[curr]:
colours[curr] = x
if not None in colours: return colours
tmp = col_var
for y in neigh[curr]: tmp[y].discard(x)
return handler(countries[1:],neigh,tmp,colours)
March 24, 2017