You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

TI-84+计算器TI-Basic贪吃蛇:双元素子列表查找优化问询

高效查找TI-Basic列表中的二维子元素

核心优化思路

TI-Basic的循环执行效率极低,尤其是当列表长度超过100后,循环次数会直接拖慢程序响应。我们可以利用列表批量运算替代逐次循环,把原本的循环判断转为向量级的比较,大幅减少执行时间。

优化后的代码实现

:dim(L1)/2→N  // 计算蛇的身体段数(每段占2个列表元素)
:seq(L1(2I-1),I,1,N)→LX  // 提取所有X坐标到LX列表
:seq(L1(2I),I,1,N)→LY    // 提取所有Y坐标到LY列表
:max((LX=X) and (LY=Y))→P // 批量比较,存在匹配则P=1,否则0

代码说明

  • 用seq()函数一次性提取所有X/Y坐标,避免循环遍历
  • 直接通过(LX=X) and (LY=Y)生成布尔列表,每个元素对应一段身体是否匹配{X,Y}
  • max()函数直接判断布尔列表中是否有1(存在匹配),无需累加计数

更进一步的性能优化

如果不想创建临时列表LX、LY,可以直接在seq里完成比较,节省内存同时减少步骤:

:max(seq((L1(2I-1)=X)*(L1(2I)=Y),I,1,dim(L1)/2))→P

这个版本不需要额外列表,直接生成匹配结果的列表,再取max判断,效率更高。

对比原代码的优势

原代码每次循环都要做判断和累加,且TI-Basic的For循环无法提前终止,哪怕已经找到匹配项仍会跑完所有循环。优化后的代码完全避免了循环,利用TI-Basic的内置列表运算特性,执行速度随列表长度增长的幅度远小于原循环方案,蛇移动的卡顿会明显缓解。

内容的提问来源于stack exchange,提问作者benji bon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 15:20:18