name: python3
---
-# Definitions generally useful for the riddle solver
-
-While this file is here as a Markdown file, it's intended that Jupytext will save this file as a "percent" Python file, so that it can be imported by other notebooks here.
-
```python
import unicodedata
import re
```
```python
-stop_words = set('my is in within lies and also always you will find the found'.split())
-negative_words = set('but not never neither nor'.split())
+stop_words = set('my is in within lies and also always you will find the found but'.split())
+negative_words = set('not never neither nor'.split())
```
```python
return len(t)
if t == "":
return len(s)
- if s[-1] == t[-1]:
+ if s[0] == t[0]:
cost = 0
else:
cost = 1
res = min(
- [ edit_distance(s[:-1], t)+1
- , edit_distance(s, t[:-1])+1
- , edit_distance(s[:-1], t[:-1]) + cost
+ [ edit_distance(s[1:], t) + 1
+ , edit_distance(s, t[1:]) + 1
+ , edit_distance(s[1:], t[1:]) + cost
])
return res
```
+```python
+dictionary_neighbours = {
+ w: [o for o in dictionary
+ if edit_distance(w, o) <= 5
+ if not set(w) <= set(o)
+ if not set(o) <= set(w)]
+ for w in dictionary}
+
+dictionary_neighbours = {w: ns
+ for w, ns in dictionary_neighbours.items()
+ if ns}
+```
+
```python
def collapse_riddle_clues(elems : Riddle) -> RiddleElems:
"""Combine the two parts of a riddle line into one element for solving.