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

190
LINES

< > BotCompany Repo | #1008131 // Compare Bot 4 [full rule application, dev.]

JavaX source code (desktop) [tags: use-pretranspiled] - run with: x30.jar

Download Jar. Uses 3874K of libraries. Click here for Pure Java version (11183L/80K).

!759

sbool killDB = false;
static int defaultMax = 1000; // steps to run

sS facts = [[
  We want to find out what is more correct than what.
  
  "not correct" is a candidate.
  "maybe quite correct" is a candidate.
  "really really correct" is a candidate.
  "buggy" is a candidate.
  "total garbage" is a candidate.
  "incorrect" is a candidate.
  "almost correct" is a candidate.
  "absolutely correct" is a candidate.
  "very correct" is a candidate.
  
  [nfhwfngqkgoqtngs] (no question) and (X is a candidate.) and (Y is a candidate.) and (X <> Y) and (There is no answer to (Is X # more correct than Y?).) => (Ask (Is X # more correct than Y?))
  // Note: The # is just a filler for parsing, we'll get rid of that in time. Also, you will be able to write stuff without brackets of course.
  
  Always apply rule nfhwfngqkgoqtngs.
  
  // Interpret answers
  [iprphzfmwithvdfb] (The answer to (Is X # Y than Z?) is (yes).) => (X is Y than Z.)
  Always apply rule iprphzfmwithvdfb.
  [udsmtmbiedmxtxci] (The answer to (Is X # Y than Z?) is (no).) => (Z is Y than X.)
  Always apply rule udsmtmbiedmxtxci.
  
  // Transitivity!
  [pglcuchrtxdmlfvh] (X is AA than Y.) and (Y is AA than Z.) => (X is AA than Z.)
  Always apply rule pglcuchrtxdmlfvh.
  
  [ijziyiplzanfwvqx] (Ask (X)) and (The answer to (X) is (Y).) => (Remove (Ask (X)))
  Always apply rule ijziyiplzanfwvqx.
  
  no question :- There is no statement with operator fxxathfdlfzgmaov.
  
  // Just a pretty-printing statement
  omrvwjslbkffaxoj hszwyiyetuuhcfwz acwmbrxqrlaplyqu
]];

sS concepts = [[
  ufzlismnlhvbjqoj - (X) and (Y) and (Z) and (AA) and (AB) => (AC)
  phkdhqkhzytkwdpb - (X) and (Y) and (Z) and (AA) => (AB)
  txsysipmstxmjhmi - (X) and (Y) => (Z)
  wziyypnyayfphdxs - (X) => (Y)
  xikyminwmeahxiws - There is no answer to (X).
  pxavyqesoqyqbipb - The answer to (X) is (Y).
  cdzttdbxadjreorm - We want to find out what is X than what.
  ogqdgzepqbunuuht - X is a candidate.
  hszwyiyetuuhcfwz - Is X # Y than Z?
  acwmbrxqrlaplyqu - Is "X" Y than "Z"?
  qgxjwufpfzkqvmxb - X is Y than Z.
  ylvaoplzguvhegka - X is not Y than Z.
  zxucpbfzmexohoiv - It is not true that (X).
  buahjsodljsaxvaq - X <> Y
  fxxathfdlfzgmaov - Ask (X)
  chjllkocfhtwcgoj - Remove (X)
  mzdvauejerzefagk - I don't know if (X)
  omrvwjslbkffaxoj - Format operator X as template Y.
  houyieutcmfdvgmz - Execute (X)
  hzmtabxcmkrtffgh - Apply X
  zvknqzxlrmuobnzx - Always apply rule X.
  plprefzezbluijrw - no question
  jexyjrtbtilmsmfw - setQuestion(X)
  cuutddpitkuswthu - While (X) => (Y)
  sicrogpdrtkiptun - X :- Y
  zhoulgsatpswstfa - There is no statement with operator X.
  ltyqczktgtjxrtlf - more correct
  zveeggveflecjwvr - total garbage
  wolealpbqkkqkvqq - not correct
  tomkbzlqlpeiekvu - maybe quite correct
  dnxyynujqydgcxcd - really really correct
  trajdgvqepyhsumb - buggy
  lwikikhkydtewtjc - incorrect
  muxjpepnjiyjghwj - almost correct
  wtnpjovqqiswlyay - absolutely correct
  bmliokweerblfxco - very correct
]];

!include #1008133 // MyTruth etc.

static Lisp currentQuestion;
  
p-tt {
  centerHigherConsole();
  substance();
  
  // customize parsing and printing
  set hygienicParse1_unquote;
  set hygienicParse1_debug;
  set englishToConceptLanguage_simple_noXYZ;
  set formatXYZ_quotedVars;
  
  // load predefined & learned statements
  useConceptsAndStatements(concepts, facts);
  if (killDB) deleteDB();
  loadMyTruth();
  printLispStatements();
  
  lispStandardEvaluators();
  bot();
}

answer {
  if "lisp" { printLispStatements(); ret "ok"; }
  if "print" { printPrettyFacts(); ret "ok"; }
  if "rule *" { applyRule_all($1); ret "ok"; }
  if "step" { applyAlwaysRules_step(); ret "ok"; }
  if "run" { applyAlwaysRules(defaultMax); ret "ok"; }
  if "force" { force(defaultMax); ret "ok"; }
}

svoid showQuestion() {
  L<Lisp> l = lispTruth1("fxxathfdlfzgmaov");
  if (l(l) > 1) warn("Multiple open questions");
  if (nempty(l)) {
    final Lisp q = first(l).get(0);
    if (eq(currentQuestion, q)) ret;
    currentQuestion = q;
    print("Question: " + q);
    swing {
      showControls2(
        centerAndSouth(
          withBottomMargin(jcenteredBoldLabel(lispToEnglish_prettier(q))),
          jcenteredline(answerButton("Yes"), answerButton("No"), answerButton("I don't know")));
    }
  }
}

svoid runInstruction(S instructionID) {
  Lisp rule = getLispTruth(instructionID);
  if (rule == null) { print("Instruction not found: " + instructionID); ret; }
  runInstruction(rule);
}
  
svoid runInstruction(Lisp rule) {
  print("runInstruction: " + rule);
  if (rule.is("hzmtabxcmkrtffgh", 1)) // Apply X
    applyRule_all(rule.raw(0));
  else if (rule.is("cuutddpitkuswthu", 2)) { // While (X) => (Y)
    while (ping() && matchCondition_simple(rule.get(0)))
      runInstruction(rule.get(1));
  } /*else if (rule.is("houyieutcmfdvgmz", 1))
    execute(rule.get(0));
  /*else if (rule.is("jexyjrtbtilmsmfw", 1)) // setQuestion(X)
    setQuestion(rule.get(0));*/
  else print("Unknown instruction type: " + rule);
}

svoid force(long steps) {
  for (long step = 0; step < steps; step++)
    applyAlwaysRules_step();
}

svoid applyAlwaysRules(long maxSteps) {
  long count = 0, step = 0;
  do {
    count = lispChangeCount();
    applyAlwaysRules_step();
  } while (++step < maxSteps && lispChangeCount() != count);
}

svoid applyAlwaysRules_step() {
  for (Lisp l : lispTruth1("zvknqzxlrmuobnzx"))
    applyRule_all(l.raw(0)); // TODO: not only random application
  for (Lisp l : lispTruth1("chjllkocfhtwcgoj")) { // Remove (X)
    unemit(l);
    unemit(l.get(0));
  }
  for (Lisp l : lispTruth1("hzmtabxcmkrtffgh")) { // Apply X
    unemit(l);
    applyRule_all(l.raw(0));
  }
  showQuestion();
}

static JButton answerButton(fS text) {
  ret jbutton(text, r {
    emit(lisp("pxavyqesoqyqbipb", currentQuestion, englishToLisp(text)), "button");
    applyAlwaysRules(defaultMax);
  });
}

// hygienic parsing
sS englishToConceptLanguage(S s) {
  Lisp l = assertNotNull(hygienicParse1(s));
  ret clUnparse(l);
}

Author comment

Began life as a copy of #1008122

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: #1008131
Snippet name: Compare Bot 4 [full rule application, dev.]
Eternal ID of this version: #1008131/6
Text MD5: 429748ab6f5e07b1445f497b2f69a63d
Transpilation MD5: d4455eb37f0c34e0b35c0aa0a2b10204
Author: stefan
Category: javax / a.i.
Type: JavaX source code (desktop)
Public (visible to everyone): Yes
Archived (hidden from active list): No
Created/modified: 2017-04-29 14:57:18
Source code size: 6206 bytes / 190 lines
Pitched / IR pitched: No / No
Views / Downloads: 446 / 942
Version history: 5 change(s)
Referenced in: [show references]