Exemple #1
0
def generate_cached_clues(phrases):
    if len(phrases) in CLUE_STRUCTURES:
        for indexed_clue in CLUE_STRUCTURES[len(phrases)]:
            yield convert_indexed_clue(indexed_clue, phrases)
    else:
        for c in generate_clues(phrases):
            yield c
def precompute_clues(max_length):
    """
    Precompute all parses up to max_length
    """
    computed_clues = dict()
    for i in range(1, max_length + 1):
        phrases = range(i)
        computed_clues[i] = generate_clues(phrases)
    with open('data/clue_structures.pck', 'w') as f:
        pickle.dump(computed_clues, f)
Exemple #3
0
def precompute_clues(max_length):
    """
    Precompute all parses up to max_length
    """
    computed_clues = dict()
    for i in range(1, max_length + 1):
        phrases = range(i)
        computed_clues[i] = generate_clues(phrases)
    with open('data/clue_structures.pck', 'w') as f:
        pickle.dump(computed_clues, f)
Exemple #4
0
    def solve_phrasing(self, phrasing):
        """
        Solve a clue which has been broken down into phrases, like:
        ['initially', 'babies', 'are', 'naked']
        """
        answers_with_clues = []
        possible_clues = list(generate_clues(phrasing))

        parallel = True

        if parallel:
            for i, clue in enumerate(possible_clues):
                self.go_proc.stdin.write(str(clue) + "\n")
            self.go_proc.stdin.write(".\n")
            for i, x in enumerate(possible_clues):
                result = self.go_proc.stdout.readline()
                while result.strip() != ".":
                    clue = eval(result)
                    result = self.go_proc.stdout.readline()
                    if clue == []:
                        continue
                    answer = clue[-1].lower()
                    if answer in phrasing or any(x.startswith(answer) for x in phrasing):
                        continue
                    answers_with_clues.append(AnnotatedAnswer(answer, clue))
        else:
            for i, clue in enumerate(possible_clues):
                # print clue
                self.go_proc.stdin.write(str(clue) + "\n")
                self.go_proc.stdin.write(".\n")
                result = self.go_proc.stdout.readline()
                while result.strip() != ".":
                    if result[0] == "#":
                        print result
                        result = self.go_proc.stdout.readline()
                        continue
                    clue = eval(result)
                    result = self.go_proc.stdout.readline()
                    if clue == []:
                        continue
                    answer = clue[-1].lower()
                    if answer in phrasing or any(x.startswith(answer) for x in phrasing):
                        continue
                    answers_with_clues.append(AnnotatedAnswer(answer, clue))
        return sorted(answers_with_clues, reverse=True)