def elect_samples(colors, n=8): if len(colors) > 1000: samples = random.sample(colors, n*5) colors = random.sample(colors, 1000) elif len(colors) > n*5: samples = random.sample(colors, n*5) assert len(samples) == n*5 else: samples = colors votes = [] for color in colors: ratings = [] for candidate in samples: ratings.append((euclidean_distance(color, candidate), tuple(candidate))) ratings.sort() vote = [r[1] for r in ratings] votes.append(vote) winners = elect_stv(samples, votes, n) return [lab_to_rgb(x) for x in winners]
def rgb_samples(colors, n=8): samples = get_samples(colors, n) assert len(samples) == n return [lab_to_rgb(s) for s in samples]