summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--starts/random-harmonic-hospital/coding-assister.js55
1 files changed, 55 insertions, 0 deletions
diff --git a/starts/random-harmonic-hospital/coding-assister.js b/starts/random-harmonic-hospital/coding-assister.js
new file mode 100644
index 0000000..143a991
--- /dev/null
+++ b/starts/random-harmonic-hospital/coding-assister.js
@@ -0,0 +1,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
+}