【语法】
一、隐蔽陷阱
推演角谷序列时预设了一个采样上限,27 的序列中途冲到 9232,超过上限后循环停不下来也无法收尾,脚本线程被占满。
二、底层原理
角谷规则:奇数变 3n+1,偶数变 n/2,猜想断言任何正整数最终到 1。它尚未被一般性证明,但可验证范围内成立。27 的序列走 111 步、峰值冲到 9232,步数与峰值需要同步跟踪。
三、正确代码
基础写法(步数推演):
local function collatz(n)
local steps = 0
while n ~= 1 do
if n % 2 == 0 then
n = n / 2
else
n = 3 * n + 1
end
steps = steps + 1
end
return steps
end
进阶写法(峰值同步跟踪):
local function collatzPeak(n)
local steps, peak = 0, n
while n ~= 1 do
if n % 2 == 0 then n = n / 2 else n = 3 * n + 1 end
steps = steps + 1
if n > peak then peak = n end
end
return steps, peak
end
local p = getplayerbyname("collatz")
local s, pk = collatzPeak(27)
sendmsg(p, 1, s .. " 步,峰值 " .. pk)
四、引擎验证
27 推演输出 111 步、峰值 9232;1 到 100 逐个验证全部到 1,其中 97 的步数最长为 118 步。
五、FAQ
问:为什么叫猜想?
答:尚无一般性证明,工程上按验证范围使用。
问:中间值会一直增大吗?
答:双精度范围内验证过的序列全部回落。
全站技术干货持续更新:996 引擎 / Lua 实战帖,语法、参数与示例一篇讲透。进入文章地图 · 查看全部 →
【语法】 一、机制原理 一行代码拆解:dist[cur] + 1。网格上求起点到终点的最少步数,广度优先一遍出答案:起点入队…
【游戏】 一、规则机制 线上事故:画质只有高低两档,高档低配机掉帧,低档高配机糊成马赛克,两头挨投诉。画质分三档:流畅、均衡…
【游戏】 一、规则机制 线上事故:转生功能上线,玩家等级刚够就点转生,提示材料不足;再一看说明,写的是转生后的等级要求——界…
【语法】 一、机制原理 抛坑提问:地图上一堆据点,用最短的围墙全圈住——围墙怎么走?凸包给答案:包住全部点的最小凸多边形。单…
【游戏】 一、规则机制 隐蔽的坑:背包满时地上物品拾不起,自动拾取又全数失败,玩家手动挑得手忙脚乱。拾取策略分层:满仓时按品…
【游戏】 一、规则机制 抛个坑:好友改了名字就认不出谁是谁——备注名怎么留住?好友备注存在自己本地:备注只改自己的显示,不动…