Overview
| Comment: | [core][py] ibdawg: debugging | 
|---|---|
| Downloads: | Tarball | ZIP archive | SQL archive | 
| Timelines: | family | ancestors | descendants | both | trunk | core | 
| Files: | files | file ages | folders | 
| SHA3-256: | cbe1422160e68702fd792c2cc8edd0e9 | 
| User & Date: | olr on 2017-11-06 14:21:13 | 
| Other Links: | manifest | tags | 
Context
| 2017-11-06 | ||
| 17:21 | [core][py] timer for testing check-in: 8ddc15536e user: olr tags: trunk, core | |
| 14:21 | [core][py] ibdawg: debugging check-in: cbe1422160 user: olr tags: trunk, core | |
| 11:31 | [fr] faux positif: se dire (part. passé) check-in: 57d0adc08a user: olr tags: trunk, fr | |
Changes
Modified gc_core/py/ibdawg.py from [816500e455] to [08bbb9ff98].
| 1 2 3 4 5 6 7 8 9 10 11 12 | #!python3 import os import traceback import pkgutil import re from itertools import chain from . import str_transform as st from . import char_player as cp from .echo import echo | > > > < < < < | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | 
#!python3
import os
import traceback
import pkgutil
import re
from itertools import chain
#import logging
#logging.basicConfig(filename="suggestions.log", level=logging.DEBUG)
from . import str_transform as st
from . import char_player as cp
from .echo import echo
class IBDAWG:
    """INDEXABLE BINARY DIRECT ACYCLIC WORD GRAPH"""
    def __init__ (self, sDicName):
        self.by = pkgutil.get_data(__package__, "_dictionaries/" + sDicName)
        if not self.by:
 | 
| ︙ | ︙ | |||
| 205 206 207 208 209 210 211 | 
            # we add what we removed
            return list(map(lambda sSug: sPfx + sSug + sSfx, aSugg))
        return aSugg
    def _suggest (self, sRemain, nMaxDel=0, nMaxHardRepl=0, nDeep=0, iAddr=0, sNewWord="", bAvoidLoop=False):
        "returns a set of suggestions"
        # recursive function
 | | | > | 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 | 
            # we add what we removed
            return list(map(lambda sSug: sPfx + sSug + sSfx, aSugg))
        return aSugg
    def _suggest (self, sRemain, nMaxDel=0, nMaxHardRepl=0, nDeep=0, iAddr=0, sNewWord="", bAvoidLoop=False):
        "returns a set of suggestions"
        # recursive function
        #logging.info((nDeep * "  ") + sNewWord + ":" + sRemain)
        aSugg = set()
        if not sRemain:
            if int.from_bytes(self.byDic[iAddr:iAddr+self.nBytesArc], byteorder='big') & self._finalNodeMask:
                #logging.info((nDeep * "  ") + "__" + sNewWord + "__")
                aSugg.add(sNewWord)
            for sTail in self._getTails(iAddr):
                #logging.info((nDeep * "  ") + "__" + sNewWord+sTail + "__")
                aSugg.add(sNewWord+sTail)
            return aSugg
        cCurrent = sRemain[0:1]
        for cChar, jAddr in self._getSimilarArcs(cCurrent, iAddr):
            aSugg.update(self._suggest(sRemain[1:], nMaxDel, nMaxHardRepl, nDeep+1, jAddr, sNewWord+cChar))
        if not bAvoidLoop: # avoid infinite loop
            if cCurrent == sRemain[1:2]:
 | 
| ︙ | ︙ |