blob: 143a991a35d658e11bc892e8d2d16fd62163ea60 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
/* NEXT: add aux func
store access order tree
-> make nodes objects */
/* BTW: need to practice slowly or will have error when fast <- although could have been a 'trick'; clocks */
async function learn1(name, goal, knowledge)
{
let focus = [{val: name}]
knowledge[name] = {val: focus}
console.log("Ctx: " + name)
a = function(idea)
{
focus.push({val: idea})
//focusUpdated()
}
randomSeed(0)
function pickNextIdx(lastIdx, focus)
{ // make this function be a contextual property
return Math.floor(random() * (focus.length - lastIdx)) + lastIdx
}
async function trial()
{
let result = []
let last = [{focus: focus, idx: 0}]
while (true) {
let llast = last[last.length - 1]
let next = pickNextIdx(llast.idx, llast.focus)
if (next >= llast.focus.length) {
if (random() >= 0.5) {
last.pop()
} else {
llast.idx = 0
}
if (last.length == 0) {
break
}
continue
}
llast.idx = next
next = llast.focus[idx].val
if (next in knowledge && random() < 0.5) {
// open subcontext or subtree
last.push({focus: knowledge[next].val, idx:0})
continue
}
result.push(next)
}
let resstr = result.join('')
return await goal(resstr)
}
// TODO: call trial in loop that checks return value
}
|