def build_potential_graphs(cycle_mapping): graphs = {} base_decider = InequalityDecider() base_decider.add_cycle_mapping(problem_def, cycle_mapping) decider = base_decider.freeze() for result, inputs in problem_def.iteritems(): my_cycles = tuple(map(operator.itemgetter(1), filter(lambda a: a[0]==result, cycle_mapping))) other_cycles = map(operator.itemgetter(1), filter(lambda a: a[0]!=result, cycle_mapping)) all_states = set(map(lambda s: string.join(s, ""), itertools.permutations(["a","a","b","b","c"]))) other_states = all_states-set(itertools.chain(*my_cycles)) for input in inputs: graphs[input] = (decider.build_transition_graph(my_cycles, other_states, input), my_cycles[0][0]) return graphs
def build_decider(prefix): basedecider = InequalityDecider() basedecider.add_cycle_mapping(problem_def, cycle_mapping) for transition in prefix: basedecider.add_transition(*transition) return basedecider.freeze()