Warning: session_start(): open(/var/lib/php/sessions/sess_o14n8ph31tp1aokr7fiq9db96h, O_RDWR) failed: No space left on device (28) in /var/www/tb-usercake/models/config.php on line 51
Warning: session_start(): Failed to read session data: files (path: /var/lib/php/sessions) in /var/www/tb-usercake/models/config.php on line 51
!include #1007689 // Web v2
static int saveInterval = 60000;
static volatile new Web web;
static L facts;
static L vars;
static long lastSave, sizeSaved;
extend Web {
volatile transient bool cancelled, calculating;
}
svoid pConsoleThoughtMachine {
tt();
setConsoleTitle(programTitle());
load("web"); lastSave = sysNow();
setFrameHeight(consoleFrame(), 400);
centerConsole();
//magellan();
//graphite();
//mistAqua();
//moderateTheme();
sahara();
swing {
consoleAddAskButton();
focusConsole();
final JLabel lblBrainSize = jRightAlignedLabel();
addToConsole2(withMargin(centerAndEast(lblBrainSize,
withLeftMargin(jbutton("Reset", "reset")))));
awtEvery(lblBrainSize, 1000, r {
lblBrainSize.setText("Brain Size: " + toM(fileSize(programFile("web.structure")), 1) + " MB");
});
awtCalcEvery(lblBrainSize, 1000, 1000, r {
if (web.calculating) ret;
int webSize = web.count();
if (shouldSave(webSize, false)) saveWeb(webSize);
});
}
aiEnhancements();
aiConcepts_noAutoClear();
useConceptsDump(concepts);
set englishToConceptLanguage_useBrackets;
vars = ll();
facts = clParse(linesToCLWithVars(theFacts, vars));
print(theFacts);
useFacts(theFacts);
//printNumberedLines(facts);
firstRiddle();
makeBot();
notDone();
}
svoid firstRiddle {
print();
for (S rid : toLinesFullTrim(theRiddle)) {
print("? " + rid);
print(" " + answer(rid));
}
print();
}
static int webSize() { ret web.count(); }
sbool shouldSave(int webSize, bool checkInterval) {
ret webSize != sizeSaved &&
(!checkInterval || sysNow() >= lastSave+saveInterval);
}
svoid saveWeb(int webSize) {
save("web");
sizeSaved = webSize;
lastSave = sysNow();
}
static S answer(S rid) {
web.calculating = true;
try {
ret answerImpl(rid);
} finally {
web.calculating = false;
}
}
static S answerImpl(S rid) {
if (match("facts", rid)) { printNumberedLines(facts); ret "OK"; }
if (match("web", rid)) { print(web); ret "OK"; }
if (match("visualize", rid)) { webToCAL(web).show(); ret "OK"; }
Web web = main.web;
Lisp riddle = clParse(englishToConceptLanguage(rid));
//print("# " + riddle);
// Create web
createWeb(web, riddle);
web.relations(facts);
int webSize = web.count();
int cursor = 0;
while licensed {
if (web.cancelled) ret "cancelled";
//print("Web size: " + webSize);
if (shouldSave(webSize, true)) {
printWithoutNL("S");
saveWeb(webSize);
} else
printWithoutNL(".");
if ((++cursor % 60) == 0) print();
CriticalAction action = beginCriticalAction("Web Update");
try {
calc(web, riddle);
} finally {
action.done();
}
int n = web.count();
if (n == webSize) break;
webSize = n;
}
print();
// print question again
if (cursor / 60 >= 10)
print("? " + rid);
// Answer question
S s = getAnswer(web);
s = or2(conceptLanguageToEnglish(unquote(s)), "I don't know");
ret s;
}
svoid cleanMeUp {
while (criticalActionsInFlight()) sleep(5);
if (sizeSaved != web.count())
save("web");
}
svoid reset {
if (!confirmOKCancel("Really clear the brain?")) ret;
web.cancelled = true;
CriticalAction action = beginCriticalAction("Resetting Brain");
try {
web = new Web;
sizeSaved = 0;
save("web");
} finally {
action.done();
}
clearConsole();
firstRiddle();
}