Go Robot
1 <html> 2 <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> 3 <title>Go Robot</title> 4 <style> 5 * {font:11pt Consolas,mono; color:limegreen; background:#201020; border:none} 6 </style> 7 <pre id='rawtbl'> 8 room1 - room2 9 room2 - room3 room4 10 room4 - room5 room1 11 room6 - room3 12 robot AT room1 13 robot GOTO room5 14 SHOW PATH 15 </pre> 16 <p><textarea id='txt' cols=132 rows=50></textarea></p> 17 <script> 18 nodes = {}; 19 lines = rawtbl.innerHTML.split('\n'); 20 for (i = 0; i < lines.length; i++) { 21 f = lines[i].split(' '); 22 f0 = f[0]; f1 = f[1]; 23 s = '' 24 if (f1 == '-') { 25 s += _(f0); 26 for (j = 2; j < f.length; j++) s += _(f[j]) + f0 + '.n.push(' + f[j] + ');' 27 log(s); eval(s) 28 } 29 else if (f1 == 'AT') 30 from = eval(f[2]); 31 else if (f1 == 'GOTO') 32 to = eval(f[2]); 33 else { 34 if (!goto(from, to)) { log('no path'); break; } 35 h = []; 36 for (p = to; p != null; p = p.b) h.push(p.m); 37 h.reverse(); 38 log(h.join(' >> ')) 39 break; 40 } 41 } 42 43 function _(x) { 44 if (x in nodes) return ''; 45 nodes[x] = 1; 46 return x + '={n:[],m:"' + x + '"};'; 47 } 48 49 function goto(p, to) { 50 log('goto(' + p.m + ', ' + to.m + ')') 51 if (p == to) return true; 52 if (p.visited) return false; 53 p.visited = true; 54 for (i = 0; i < p.n.length; i++) { 55 q = p.n[i]; q.b = p; 56 if (goto(q, to)) return true; 57 } 58 return false; 59 } 60 61 function log(s) { txt.value += s + '\n' } 62 </script>
走迷宫的小程序。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?