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

51
LINES

< > BotCompany Repo | #1000492 // LPrefixSuffix (learner)

JavaX fragment (include)

1  
  // learns to exchange common prefixes and suffixes.
2  
  // maybe it's not perfect... see #1000491 for a problem case
3  
  
4  
  static class LPrefixSuffix extends LearnerImpl {
5  
    static boolean debug;
6  
    String prefixIn, suffixIn, prefixOut, suffixOut;
7  
    
8  
    public void processInOut(Object _in, Object _out) {
9  
      String in = (String) _in, out = (String) _out;
10  
      updateIn(in);
11  
      prefixOut = prefixOut == null ? out : commonPrefix(prefixOut, out);
12  
      suffixOut = suffixOut == null ? out : commonSuffix(suffixOut, out);
13  
      if (debug)
14  
        printState("processInOut(" + quote(in) + ", " + quote(out) + ")");
15  
    }
16  
    
17  
    void updateIn(String in) {
18  
      prefixIn = prefixIn == null ? in : commonPrefix(prefixIn, in);
19  
      suffixIn = suffixIn == null ? in : commonSuffix(suffixIn, in);
20  
      if (debug)
21  
        printState("updateIn(" + quote(in) + ")");
22  
    }
23  
24  
    public String processIn(Object _in) {
25  
      String in = (String) _in;
26  
      //System.out.println("[before last info] " + quote(prefixIn) + " " + quote(suffixIn) + " " + quote(prefixOut) + " " + quote(suffixOut));
27  
      //System.out.println("[last info] " + quote(in));
28  
      
29  
      // use latest information
30  
      String p = prefixIn, s = suffixIn;
31  
      updateIn(in);
32  
      prefixOut = prefixOut.substring(0, prefixOut.length()-(p.length()-prefixIn.length()));
33  
      suffixOut = suffixOut.substring(s.length()-suffixIn.length());
34  
      
35  
      //System.out.println("[after last info] " + quote(prefixIn) + " " + quote(suffixIn) + " " + quote(prefixOut) + " " + quote(suffixOut));
36  
      String core = in.substring(prefixIn.length(), in.length()-suffixIn.length());
37  
      return prefixOut + core + suffixOut;
38  
    }
39  
    
40  
    public void toJava(Code code) {
41  
      if (prefixIn.length() != 0 || suffixIn.length() != 0)
42  
        code.line(code.var + " = ((String) " + code.var + ").substring(" + prefixIn.length() + ", " + code.s() + ".length()-" + suffixIn.length() + ");");
43  
      if (prefixOut.length() != 0 || suffixOut.length() != 0)
44  
        code.line(code.var + " = " + quote(prefixOut) + " + " + code.var + " + " + quote(suffixOut) + ";");
45  
    }
46  
    
47  
    void printState(String text) {
48  
      System.out.println(text);
49  
      printVars();
50  
    }
51  
  }

download  show line numbers  debug dex  old transpilations   

Travelled to 14 computer(s): aoiabmzegqzx, bhatertpkbcr, cbybwowwnfue, cfunsshuasjs, gwrvuhgaqvyk, ishqpsrjomds, lpdgvwnxivlt, mqqgnosmbjvj, onxytkatvevr, pyentgdyhuwx, pzhvpgtvlbxg, tslmcundralx, tvejysmllsmz, vouqrxazstgt

No comments. add comment

Snippet ID: #1000492
Snippet name: LPrefixSuffix (learner)
Eternal ID of this version: #1000492/1
Text MD5: 9f08a357926204438d2dd3cbc5ccf057
Author: stefan
Category:
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2015-08-09 15:02:59
Source code size: 2284 bytes / 51 lines
Pitched / IR pitched: No / Yes
Views / Downloads: 511 / 1449
Referenced in: [show references]