Python Forum
Cross word puzzle solve using python constraint library
Thread Rating:
  • 1 Vote(s) - 3 Average
  • 1
  • 2
  • 3
  • 4
  • 5
Cross word puzzle solve using python constraint library
#1
[Image: open?id=1GAH82jPFC-OSY-HPY9VZixf7Tjn_YPe3]
# -*- coding: utf-8 -*-
"""
Spyder Editor
This is a temporary script file.
"""
from constraint import *
problem = Problem()
problem.addVariable("1ACROSS",["HOSES","LASER","SAILS","SHEET","STEER"])
problem.addVariable("4ACROSS",["HEEL","HIKE","KEEL","KNOT","LINE"])
problem.addVariable("7ACROSS",["AFT","ALE","EEL","LEE","TIE"])
problem.addVariable("8ACROSS",["HOSES","LASER","SAILS","SHEET","STEER"])
problem.addVariable("2DOWN",  ["HOSES","LASER","SAILS","SHEET","STEER"])
problem.addVariable("3DOWN",  ["HOSES","LASER","SAILS","SHEET","STEER"])
problem.addVariable("5DOWN",["HEEL","HIKE","KEEL","KNOT","LINE"])
problem.addVariable("6DOWN",["AFT","ALE","EEL","LEE","TIE"])
problem.addConstraint(lambda 1ACROSS,2DOWN: 1ACROSS in range((1,1),(1,5)) and 2DOWN in range ((1,3),(5,3)) and 1ACROSS[2]==2DOWN[0])
problem.addConstraint(lambda 3DOWN,1ACROSS: 3DOWN in range((1,5),(5,5)) and 1ACROSS[4]==3DOWN[0])
problem.addConstraint(lambda 4ACROSS,5DOWN: 4ACROSS in range((3,2),(3,5)) and 5DOWN in range ((3,4),(6,4)) and 4ACROSS[1]==2DOWN[2] and 4ACROSS[2]==5DOWN[0] and 4ACROSS[3]==3DOWN[2])
problem.addConstraint(lambda 6DOWN,8ACROSS: 6DOWN in range((4,1),(6,1)) and 8ACROSS in range((5,1),(5,5)) and 6DOWN[1]==8ACROSS[0])
problem.addConstraint(7ACROSS in range((4,3),(4,5)) and 7ACROSS[0]==2DOWN[3] and 7ACROSS[1]==5DOWN[1] and 7ACROSS[2]==3DOWN[3])
problem.addConstraint(8ACROSS in range((5,1),(5,5)) and 8ACROSS[0]==6DOWN[1] and 8ACROSS[2]==2DOWN[4] and 8ACROSS[3]==5DOWN[2] and 8ACROSS[4]==3DOWN[4])
problem.getSolution()
But this code didn't work... any help regarding this . When i run this it gives this output
Error:
line 16 problem.addConstraint(lambda 1ACROSS,2DOWN: 1ACROSS in range((1,1),(1,5)) and 2DOWN in range ((1,3),(5,3)) and 1ACROSS[2]==2DOWN[0]) ^ SyntaxError: invalid syntax
Reply
#2
The documentation for problem.addVariable always shows items in list as numerics, never strings, although I don't see any constraints on doing so:
Output:
addVariable(self, variable, domain) Add a variable to the problem Example: >>> problem = Problem() >>> problem.addVariable("a", [1, 2]) >>> problem.getSolution() in ({'a': 1}, {'a': 2}) True Parameters: variable - Object representing a problem variable (type=hashable object) domain - Set of items defining the possible values that the given variable may assume (type=list, tuple, or instance of Domain) addVariables(self, variables, domain) Add one or more variables to the problem Example: >>> problem = Problem() >>> problem.addVariables(["a", "b"], [1, 2, 3]) >>> solutions = problem.getSolutions() >>> len(solutions) 9 >>> {'a': 3, 'b': 1} in solutions True Parameters: variables - Any object containing a sequence of objects represeting problem variables (type=sequence of hashable objects) domain - Set of items defining the possible values that the given variables may assume (type=list, tuple, or instance of Domain)
If that were an issue, I would expect it to be documented, but don't see it.

I found the example of building a crossword which uses constraints: http://www.cromulentrambling.com/2017/01...ython.html
Please note that the author builds problem thusly:
problem.addVariables(list(range(s*s)), [0,1])
again with a list of numerics for domain.
Reply


Possibly Related Threads…
Thread Author Replies Views Last Post
  How to solve this problem Python configuration? magomes 5 211 Mar-22-2024, 11:11 PM
Last Post: magomes
  Two Python problems to solve djzsp 1 229 Mar-17-2024, 01:18 AM
Last Post: deanhystad
  Constraint function tman 4 1,278 Dec-27-2022, 01:52 PM
Last Post: ndc85430
  How to solve pancake flip with Python longmen 5 1,987 May-09-2022, 05:16 PM
Last Post: deanhystad
Star Interesting Intro to python problem I can't solve. Honestworker 5 12,161 Mar-04-2021, 02:05 AM
Last Post: BashBedlam
  solve probability problem by python Dreammer 1 1,813 Dec-24-2020, 09:51 AM
Last Post: Larz60+
  8 puzzle game aliyark145 4 10,622 May-30-2020, 05:54 PM
Last Post: Alkis
  A sign-Reversal Puzzle HY2000 2 2,434 Dec-05-2019, 11:55 AM
Last Post: HY2000
  Simple Eight-Puzzle not working! BenjaminDJ 2 3,131 May-04-2018, 12:17 PM
Last Post: BenjaminDJ
  help with cross Item97 27 11,173 Nov-28-2017, 09:18 PM
Last Post: Item97

Forum Jump:

User Panel Messages

Announcements
Announcement #1 8/1/2020
Announcement #2 8/2/2020
Announcement #3 8/6/2020