Beispiel #1
0
        Smoothie.sakura: 2,
        Smoothie.life: 3,
        Smoothie.earth: 4,
        Smoothie.abyss: 5,
    }

    # set up the puzzle with default constraints
    puzzle = Puzzle(element_types=elements, elements=solution.keys(), n_houses=5).set_constraints()
    print(puzzle)

    # generate all the clues
    clues: Set[Clue] = set()
    for generate_function in (
        generate_found_at,
        generate_same_house,
        generate_consecutive_beside,
        generate_left_right_of,
        generate_one_between,
        generate_two_between,
    ):
        clues = clues.union(generate_function(puzzle, solution))

    reduced, extras = reduce_clues(puzzle, clues)
    for clue in reduced:
        puzzle.add_clue(clue)

    print(puzzle)
    print("Here are some extra clues if the puzzle is too hard:")
    for clue in extras:
        print(f" - {clue}")