def reduce_molecule(current_molecule, inverted_substitutions, current_replacements_count):
    reduced_molecules = shared_code.generate_all_viable_molecules_after_single_replacement(current_molecule, inverted_substitutions)
    most_reduced_molecule = sorted(reduced_molecules, key=lambda x: len(x))[0]
    new_replacements_count = current_replacements_count + 1

    if most_reduced_molecule is "e":
        # If reduced_molecule is 'e', we are done searching the chain.
        global_replacement_counts.add(new_replacements_count)
    else:
        reduce_molecule(most_reduced_molecule, inverted_substitutions, new_replacements_count)
示例#2
0
def reduce_molecule(current_molecule, inverted_substitutions, current_replacements_count):
    reduced_molecules = shared_code.generate_all_viable_molecules_after_single_replacement(current_molecule, inverted_substitutions)
    most_reduced_molecule = sorted(reduced_molecules, key=lambda x: len(x))
    new_replacements_count = current_replacements_count + 1

    if most_reduced_molecule is "e":
        # If reduced_molecule is 'e', we are done searching the chain.
        global_replacement_counts.add(new_replacements_count)
    else:
        reduce_molecule(most_reduced_molecule, inverted_substitutions, new_replacements_count)
import shared_code
import re


if __name__ == "__main__":
    with open("replacements_input.txt") as replacements_input_file:
        substitutions = []

        for line in replacements_input_file:
            characters_to_replace = re.search("^\w+", line)
            characters_to_insert = re.search("\w+$", line)

            substitutions.append((characters_to_replace.group(0), characters_to_insert.group(0)))

        viable_molecules = shared_code.generate_all_viable_molecules_after_single_replacement(shared_code.INITIAL_MOLECULE, substitutions)

        print "The number of molecules that can be generated is: " + str(len(viable_molecules))