def data_keys(self): return utils.flatten( [self.datasets[k].keys() for k in sorted(self.datasets)])
def data_values(self): return utils.flatten([self.datasets[k].values() for k in self.keys()])
def get_min_puzzle_seed_solution(self): counts = self.get_num_puzzles_per_hint() min_hints = min(utils.flatten([v.keys() for v in counts.values()])) min_hint_counts = {k: v[min_hints] for k, v in counts.items()} min_board = min(min_hint_counts, key=lambda k: min_hint_counts[k]) return min_board