!7 sS inputDiagrams = [[ CirclesAndLines(circles=[Circle(text="Today's project", x=d("0.24927953890489912"), y=d("0.1760154738878143")), Circle(text="Showing", x=d("0.24639769452449567"), y=d("0.4816247582205029")), Circle(text="a JButton", x=d("0.5547550432276657"), y=d("0.4796905222437137")), Circle(text="an image", x=d("0.43948126801152737"), y=d("0.758220502901354")), Circle(text="a text", x=d("0.7103746397694525"), y=d("0.7620889748549323"))], lines=[Arrow(a=t5, b=t26, text="is"), Arrow(a=t26, b=t47, text=""), Arrow(a=t47, b=t68, text="with"), Arrow(a=t47, b=t89, text="with")], title="Today's project") CirclesAndLines(circles=[Circle(text="What I can do", x=d("0.24927953890489912"), y=d("0.1760154738878143")), Circle(text="Showing", x=d("0.24639769452449567"), y=d("0.4816247582205029")), Circle(text="a JButton", x=d("0.5547550432276657"), y=d("0.4796905222437137")), Circle(text="a text", x=d("0.7103746397694525"), y=d("0.7620889748549323"))], lines=[Arrow(a=t5, b=t26, text="is"), Arrow(a=t26, b=t47, text=""), Arrow(a=t47, b=t68, text="with")], title="What I could already do") CirclesAndLines(circles=[Circle(text="What I can do", x=d("0.24927953890489912"), y=d("0.1760154738878143")), Circle(text="Showing", x=d("0.24639769452449567"), y=d("0.4816247582205029")), Circle(text="a JButton", x=d("0.5547550432276657"), y=d("0.4796905222437137")), Circle(text="an image", x=d("0.41210374639769454"), y=d("0.758220502901354"))], lines=[Arrow(a=t5, b=t26, text="is"), Arrow(a=t26, b=t47, text=""), Arrow(a=t47, b=t68, text="with")], title="What I could already do 2") ]]; p-subst { L webs = websFromCALStructures(inputDiagrams); JTextPane tpAnswer = setFont(sansSerif(20), jcenteredtextpane()); setFrameSize(700, 500, showTabbedWebs(listPlus((L) moveFirstToEnd(cloneList(webs)), "Computer's Insight", jTiledBackground(whiteImage(10, 10), jFullCenter(tpAnswer))))); // Just print some stuff print(web_starterNodes(first(webs))); webs = map cloneWeb(webs); L trees = map(webs, func(Web web) { webTree_sortChildren(webTree_renameHead("*", web_makeTree(web_starterNode(web)))) }); map web_printWebTree(trees); // Do the actual calculation L> diff1 = webs_differingNodes(first(webs), second(webs)); L> diff2 = webs_differingNodes(first(webs), last(webs)); if (l(diff1) == 1 && l(diff2) == 1) { Pair a = first(diff1), b = first(diff2); if (a.a == b.a) { WebNode node = a.a; L nu = web_forwardRelated(node); L old1 = web_forwardRelated(a.b); L old2 = web_forwardRelated(b.b); Set t_nu = web_textSet(nu), t_old1 = web_textSet(old1), t_old2 = web_textSet(old2); if (eq(t_nu, joinTreeSets(t_old1, t_old2))) { S answer = "AHA!!!\n\nYou want to combine " + join(" AND ", t_nu) + " into " + web_text(node) + "."; int seconds = 100; setText(tpAnswer, answer); JWindow box = infoBox(answer, seconds); moveWindowDown(showAnim(#1010239, seconds), box.getHeight()+20); } } } }