Not logged in.  Login/Logout/Register | List snippets | | Create snippet | Upload image | Upload data

27
LINES

< > BotCompany Repo | #1027972 // constructWordFromCISet_withConnectors

JavaX fragment (include) [tags: use-pretranspiled]

Libraryless. Click here for Pure Java version (2717L/17K).

// dictionary and connectors have to be ciSets
static Chain<S> constructWordFromCISet_withConnectors(S word, Set<S> dictionary, Set<S> connectors) {
  ifdef constructWordFromCISet_withConnectors_debug
  print("checking: " + word);
  endifdef
  if (contains(dictionary, word)) ret Chain<S>(word);
  for ping (int i = l(word)-1; i > 0; i--) {
    S prefix = takeFirst(i, word);
    if (contains(dictionary, prefix)) {
      S rest = substring(word, i);
      
      // try connector
      LS matchingConnectors = reversed(prefixesOfIC(connectors, rest));
      for (S conn : matchingConnectors) {
        Chain<S> chain = constructWordFromCISet_withConnectors(dropPrefixIC(conn, rest), dictionary, connectors);
        if (chain != null)
          ret Chain<S>(prefix, Chain<S>(conn, chain));
      }
      
      // try no connector
      Chain<S> chain = constructWordFromCISet_withConnectors(rest, dictionary, connectors);
      if (chain != null)
        ret Chain<S>(prefix, chain);
    }
  }
  null;
}

Author comment

Began life as a copy of #1027969

download  show line numbers  debug dex  old transpilations   

Travelled to 7 computer(s): bhatertpkbcr, mqqgnosmbjvj, pyentgdyhuwx, pzhvpgtvlbxg, tvejysmllsmz, vouqrxazstgt, xrpafgyirdlv

No comments. add comment

Snippet ID: #1027972
Snippet name: constructWordFromCISet_withConnectors
Eternal ID of this version: #1027972/3
Text MD5: abe1dd6d6b479478392fbb972825cee7
Transpilation MD5: 945c475ba665eac774e0458bd8ecc7a8
Author: stefan
Category: javax / nlp
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2020-04-21 11:11:10
Source code size: 1031 bytes / 27 lines
Pitched / IR pitched: No / No
Views / Downloads: 194 / 279
Version history: 2 change(s)
Referenced in: #1006654 - Standard functions list 2 (LIVE, continuation of #761)