Пример #1
0
def run_gui_problem():
    """ Determine the layout of some GUI elements """

    # Define variables
    variables = [
            ('th', [20,]),
            ('iph', [16,]),
            ('ip0y', range(0,100)),
            ('ip1y', range(0,100)),
            ('op0y', range(0,100))
            ]

    # Generate constraints
    constraints = []
    constraints.append( (('ip0y', 'iph'), lambda ip0y, iph: ip0y>=iph) )
    constraints.append( (('ip1y', 'ip0y', 'iph'), lambda ip1y, ip0y, iph: ip1y>=ip0y+iph) )
    constraints.append( (('op0y', 'ip0y'), lambda op0y, ip0y: op0y==ip0y) )

    cprob = CSP(variables, constraints)
    sol = cprob.backtrack()
    print sol
Пример #2
0
def run_coin_problem():
    """ Figure out how to make 0-99 cents in change (using quarters, dimes, nickels, and pennies) """

    # Define variables
    variables = [
            ('Q',[0,1,2,3]),
            ('D',[0,1,2]),
            ('N',[0,1]),
            ('P',[0,1,2,3,4])
            ]

    # Generate constraints
    constraints=[]
    def make_constraint(n):
        return lambda Q,D,N,P:(Q*25+D*10+N*5+P==n)
    for i in xrange(100):
        constraints.append( (['Q','D','N','P'],make_constraint(i)) )

    # Solve each constraint separately and print solutions
    cprob = CSP(variables)
    for i,con in enumerate(constraints):
        cprob.reset_constraints([con])
        sol = cprob.backtrack()
        print "{0:2} cents: {1[Q]:2} quarters, {1[D]:2} dimes, {1[N]:2} nickels, {1[P]:2} pennies".format(i,sol)