summaryrefslogtreecommitdiff
path: root/intellect-framework-from-internet/starts/random-harmonic-hospital/coding-assister.js
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
}