X-Git-Url: https://git.njae.me.uk/?a=blobdiff_plain;f=riddle_solver.md;h=e58deab56d81b84357e16e09984b06585b278ab0;hb=refs%2Fheads%2Fmain;hp=a9e3064dd36242c65fd1b04a11d203e3143ba3d9;hpb=ce34915246926441c163272e09f1343db3fd1955;p=riddle-generator.git diff --git a/riddle_solver.md b/riddle_solver.md index a9e3064..e58deab 100644 --- a/riddle_solver.md +++ b/riddle_solver.md @@ -37,12 +37,13 @@ def parse_line(tokens: List[str]) -> Tuple[int, Tuple[RiddleClue, RiddleClue]]: position_word = [t for t in stripped_tokens if t in ordinals][0] pos = from_ordinal(position_word) - first_index, first_word = [(i, t) for i, t in enumerate(stripped_tokens) + indexed_words = [(i, t) for i, t in enumerate(stripped_tokens) if t not in ordinals - if t not in negative_words][0] - second_index, second_word = [(i, t) for i, t in enumerate(stripped_tokens) - if t not in ordinals - if t not in negative_words][1] + if t not in negative_words] + + first_index, first_word = indexed_words[0] + second_index, second_word = indexed_words[1] + neg_indices = [i for i, t in enumerate(stripped_tokens) if t in negative_words] first_clue = None @@ -80,6 +81,10 @@ e2 = parse_line(tokenise("My second is in apple and also in banana.")) e2 ``` +```python +parse_line(tokenise("My fourth is in both apple and banana.")) +``` + ```python e3 = parse_line(tokenise('My seventh is neither in callus nor in calves')) e3 @@ -107,10 +112,10 @@ sample_riddle ```python def parse_riddle(riddle_text: str) -> Riddle: - riddle_lines = {i: elem - for i, elem in - [parse_line(tokenise(l)) for l in riddle_text.split('\n')]} - return collapse_riddle_clues(riddle_lines) + return {i: elem + for i, elem in + [parse_line(tokenise(l)) + for l in riddle_text.split('\n')]} ``` ```python @@ -120,7 +125,8 @@ solve_riddle(sample_riddle) ```python def parse_and_solve_riddle(riddle_text: str) -> List[str]: riddle = parse_riddle(riddle_text) - return solve_riddle(riddle) + elems = collapse_riddle_clues(riddle) + return solve_riddle(elems) ``` ```python