예제 #1
0
파일: test_clues.py 프로젝트: jonc/cryptics
 def test_known_clues(self):
     with CrypticClueSolver() as solver:
         for clue_text in open("clues/known_clues.txt", "r").readlines():
             print "\n========================================"
             phrases, lengths, pattern, known_answer = split_clue_text(clue_text)
             solver.setup(clue_text)
             answers = solver.run()
             print answers[0].long_derivation()
             for a in answers[:5]:
                 print a
             self.assertEqual(answers[0].answer.lower(), known_answer.lower().strip())
예제 #2
0
 def test_known_clues(self):
     with CrypticClueSolver() as solver:
         for clue_text in open('clues/known_clues.txt', 'r').readlines():
             print "\n========================================"
             phrases, lengths, pattern, known_answer = split_clue_text(
                 clue_text)
             solver.setup(clue_text)
             answers = solver.run()
             print answers[0].long_derivation()
             for a in answers[:5]:
                 print a
             self.assertEqual(answers[0].answer.lower(),
                              known_answer.lower().strip())
예제 #3
0
 def test_timed_clues(self):
     with CrypticClueSolver() as solver:
         solver.quiet = True
         start = time.time()
         for clue_text in open("clues/known_clues.txt", "r").readlines():
             print "\n========================================"
             print clue_text
             phrases, lengths, pattern, known_answer = split_clue_text(clue_text)
             solver.setup(clue_text)
             answers = solver.run()
             print answers[0].long_derivation()
             # for a in answers[:5]:
             #     print a
             self.assertEqual(answers[0].answer.lower(), known_answer.lower().strip())
         print "\n========================================"
         print "Finished timed set in {:.1f} seconds".format(time.time() - start)
예제 #4
0
 def test_timed_clues(self):
     with CrypticClueSolver() as solver:
         solver.quiet = True
         start = time.time()
         for clue_text in open('clues/known_clues.txt', 'r').readlines():
             print "\n========================================"
             print clue_text
             phrases, lengths, pattern, known_answer = split_clue_text(
                 clue_text)
             solver.setup(clue_text)
             answers = solver.run()
             print answers[0].long_derivation()
             # for a in answers[:5]:
             #     print a
             self.assertEqual(answers[0].answer.lower(),
                              known_answer.lower().strip())
         print "\n========================================"
         print "Finished timed set in {:.1f} seconds".format(time.time() -
                                                             start)
예제 #5
0
파일: server.py 프로젝트: kod3r/cryptics
 def GET(self, clue):
     clue = clue.strip()
     if clue != "":
         if not re.match(r"[^\(\)]*\([0-9]+ *[,[0-9 ]*]*\)[ \.a-zA-Z]*",
                         clue):
             return render.solver(
                 None, clue,
                 "I don't quite understand the formatting of that clue. Please make sure that the clue is of the form: <br>clue text (length)<br>or<br>clue text (length) pattern<br> as in the examples above."
             )
         try:
             phrases, lengths, pattern, answer = split_clue_text(clue)
             if sum(lengths) != len(pattern) and pattern != '':
                 print "length mismatch"
                 return render.index(
                     None, clue,
                     "The length of the pattern must exactly match the number of letters in the answer, or you can just leave it blank. Here are some allowable patterns:<br>(5) ....s<br>(3,2) a.e..<br>(9)<br>"
                 )
             assert len(pattern) == 0 or len(pattern) == sum(
                 lengths
             ), "Answer lengths and length of pattern string must match: sum(%s) != %d" % (
                 lengths, len(pattern))
         except Exception as e:
             raise e
             print e
             return render.solver(
                 None, clue,
                 "Something went wrong that I don't know how to handle. Here's python's attempt at an explanation:<br>"
                 + str(e))
         if len(phrases) > 7:
             return render.solver(
                 None, clue,
                 "Sorry, I can't reliably handle clues longer than 7 phrases yet. Try grouping some words into phrases by putting an underscore instead of a space between them"
             )
         solver.setup(clue)
         solver.run()
         answers = solver.collect_answers()
         print "returning:", answers
         return render.solver(answers, solver.clue_text, "")
     else:
         return render.solver(None, "", "")
예제 #6
0
 def GET(self, clue):
     clue = clue.strip()
     if clue != "":
         if not re.match(r"[^\(\)]*\([0-9]+ *[,[0-9 ]*]*\)[ \.a-zA-Z]*", clue):
             return render.solver(None, clue, "I don't quite understand the formatting of that clue. Please make sure that the clue is of the form: <br>clue text (length)<br>or<br>clue text (length) pattern<br> as in the examples above.")
         try:
             phrases, lengths, pattern, answer = split_clue_text(clue)
             if sum(lengths) != len(pattern) and pattern != '':
                 print "length mismatch"
                 return render.solver(None, clue, "The length of the pattern must exactly match the number of letters in the answer, or you can just leave it blank. Here are some allowable patterns:<br>(5) ....s<br>(3,2) a.e..<br>(9)<br>")
             assert len(pattern) == 0 or len(pattern) == sum(lengths), "Answer lengths and length of pattern string must match: sum(%s) != %d" % (lengths, len(pattern))
         except Exception as e:
             raise e
             print e
             return render.solver(None, clue, "Something went wrong that I don't know how to handle. Here's python's attempt at an explanation:<br>" + str(e))
         if len(phrases) > 7:
             return render.solver(None, clue, "Sorry, I can't reliably handle clues longer than 7 phrases yet. Try grouping some words into phrases by putting an underscore instead of a space between them")
         solver.setup(clue)
         solver.run()
         answers = solver.collect_answers()
         print "returning:", answers
         return render.solver(answers, solver.clue_text, "")
     else:
         return render.solver(None, "", "")
예제 #7
0
from pycryptics.solve_clue import CrypticClueSolver, split_clue_text

with CrypticClueSolver() as solver:
    for clue_text in open('clues/known_clues.txt', 'r').readlines():
        phrases, lengths, pattern, known_answer = split_clue_text(clue_text)
        solver.setup(clue_text)
        answers = solver.run()
        for a in answers[:5]: print a
        assert (answers[0].answer.lower() == known_answer.lower().strip())
예제 #8
0
from pycryptics.solve_clue import CrypticClueSolver, split_clue_text

with CrypticClueSolver() as solver:
    for clue_text in open('clues/known_clues.txt', 'r').readlines():
        phrases, lengths, pattern, known_answer = split_clue_text(clue_text)
        solver.setup(clue_text)
        answers = solver.run()
        for a in answers[:5]:
            print a
        assert (answers[0].answer.lower() == known_answer.lower().strip())