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

73
LINES

< > BotCompany Repo | #1003274 // "Super Precise" Engine As Class

JavaX fragment (include)

sclass SuperPrecise {
  sclass C {
    char c;
    bool output;
   
    *() {}
    *(char *c, bool *output) {}
  }

  S poemID;
  new L<C> script;
  int i = 0;
  bool fail;
  new StringBuilder out;
  
  *(S *poemID) {
    for (E e : parsePoem(poemID)) {
      if (e.q != null)
        addInput(e.q + "\n");
      else if (e.a != null)
        addOutput(e.a + "\n");
    }
    
    loop();
  }
  
  // probably remove this
  void loop() {
    printOut();
    S line;
    while ((line = readLine()) != null) {
      for (char c : chars(line + "\n"))
        onIncomingCharacter(c);
      printOut();
    }
  }
  
  void addOutput(S text) {
    for (char c : asChars(text))
      script.add(new C(c, true));
  }
  
  void addInput(S text) {
    for (char c : asChars(text))
      script.add(new C(c, false));
  }
  
  void onIncomingCharacter(char c) {
    if (fail || get(script, i) == null)
      charPut('?');
    else {
      C x = get(script, i);
      assertFalse(x.output);
      if (c == x.c) {
        ++i;
        printOut();
      } else {
        fail = true;
        charPut('?');
      }
    }
  }
  
  void printOut() {
    while (!fail && get(script, i) != null && get(script, i).output)
      charPut(get(script, i++).c);
    //charPut_flush();
  }
  
  void charPut(char c) {
    out.append(c);
  }
}

Author comment

Began life as a copy of #1003257

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: #1003274
Snippet name: "Super Precise" Engine As Class
Eternal ID of this version: #1003274/1
Text MD5: d4725039e614212ce70c97014f206e0f
Author: stefan
Category: javax / talking robots
Type: JavaX fragment (include)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2016-06-13 01:01:18
Source code size: 1387 bytes / 73 lines
Pitched / IR pitched: No / No
Views / Downloads: 589 / 840
Referenced in: #1003275 - Multiply (dev.)