Little AI fiddlings
Just fiddling.
by mich
HTML
<form action="." method="post" onsubmit="AI.process(this.ai_input.value); event.preventDefault();">
<fieldset>
<label for="ai_input">Input:</label>
<input type="text" id="ai_input" name="ai_input" />
<input type="submit" value="Process" />
<label for="ai_output">Output:</label>
<textarea id="ai_output" name="ai_output" rows="6" cols="40"></textarea>
<input type="button" value="Clear output" onclick="AI.clearOutput();" />
</fieldset>
</form>
CSS
body { font-family: 'Arial', 'Helvetica', 'sans-serif'; font-size: 16px; }
label { display: block; font-weight: bold; margin: 2px 0; }
input[type="text"], textarea { border: solid 1px #777; padding: 2px; width: 75%; }
textarea { height: 250px; }
JavaScript
var AI = {
'facts': { },
'setup': {
'inputFieldId': 'ai_input',
'outputFieldId': 'ai_output'
},
'process': function ( inputStr ) {
AI.output('>> ' + inputStr);
var commandWords = inputStr.replace(/\s{2,}/, '').split(' ');
if(commandWords.length >= 3) {
commandWords[0] = commandWords[0].toLowerCase();
commandWords[1] = commandWords[1].toLowerCase();
if(commandWords[1] == 'is' && inputStr.substr(inputStr.length - 1, 1) != '?') {
AI.output('<< ' + AI.setDefinition(commandWords));
//save definition and say ok
}
else if ((commandWords[0] == 'what' || commandWords[0] == 'who') && inputStr.substr(inputStr.length - 1, 1) == '?') {
//look up definition and output it
AI.output('<< ' + commandWords[2].substr(0, commandWords[2].length-1) + ' is ' + AI.getDefinition(commandWords[2].substr(0, commandWords[2].length-1).toLowerCase()) + '.');
}
}
document.getElementById(AI.setup.inputFieldId).value = '';
},
'setDefinition': function ( definitionCommand ) {
var full_definition = '';
for(var a = 2; a < definitionCommand.length; a += 1) {
full_definition += definitionCommand[a] + ' ';
}
full_definition = full_definition.substr(0, full_definition.length - 1);
AI.facts[definitionCommand[0]] = full_definition;
return 'OK.';
},
'getDefinition': function ( term ) {
if(typeof(AI.facts[term]) !== 'undefined') {
return AI.facts[term];
}
else {
return '[not yet defined]';
}
},
'output': function ( outStr ) {
var ai_output_field = document.getElementById(AI.setup.outputFieldId);
ai_output_field.value += outStr + "\n";
},
'clearOutput': function ( ) {
...