修改具有特定最大值和最小值的表中的数字
2019-5-11 16:5:30
收藏:0
阅读:81
评论:2
我有一个基本表格,其中包含介于32和512之间的随机数字。我想能够增加和减少每个数字的值10,除非表格中的最小数字= 32或最大数字= 512。
我正在使用夹紧方法将我的数字限制在给定值,所有内容都有效,但是所有数字都将降低到最低值而不是函数暂停,如果表格中的最低数字为32。因此,它们所有都会到32或512,而不是在其中一个数字达到32或512时停止。
如果(math.min(table.unpack(sequences.c1Sequence.data))>=32且math.max(table.unpack(sequences.c1Sequence.data))<=512)then
for i,v in ipairs(sequences.c1Sequence.data)do
sequences.c1Sequence.data [i] = util.clamp(v +(10 * d) , 32,512)
end
end
要澄清,“d”每次调用函数时都是1或-1,因此i = i + /-10取决于输入内容。
夹紧函数如下:
util.clamp = function(n,min,max)
return math.min(max,(math.max(n,min)))
end
表格只是:
data = {33,122,97,64,222,314,90,39,63,44,312,502,34,409,111,212}
或任何其他随机数字范围。
我希望当范围内的任何数字= 32或512时,函数不会做任何事情,数字将保持不变。相反,它们所有(如果函数不断接收-1很多次)都会到32或(如果函数不断获得+1)都会到512。随机性没有被保留。
干杯 :)
点赞
用户7396148
我认为你只需要将比较操作符改成 ~= 就可以了。
data = {33, 122, 97, 64, 222, 314, 90, 39, 63, 44, 312, 502, 34, 409, 111, 212}
clamp = function(n, min, max)
return math.min(max,(math.max(n,min)))
end
while (true) do
if math.min(table.unpack(data)) ~= 32 and math.max(table.unpack(data)) ~= 512 then
for i, v in ipairs(data) do
data[i] = clamp(v + (10 * -1), 32, 512)
end
else
print(table.unpack(data))
break
end
end
-1 输出:
32 112 87 54 212 304 80 32 53 34 302 492 32 399 101 202
+1 输出:
43 132 107 74 232 324 100 49 73 54 322 512 44 419 121 222
2019-05-11 23:23:05
评论区的留言会收到邮件通知哦~
推荐文章
- Lua 虚拟机加密load(string.dump(function)) 后执行失败问题如何解决
- 我想创建一个 Nginx 规则,禁止访问
- 如何将两个不同的lua文件合成一个 东西有点长 大佬请耐心看完 我是小白研究几天了都没搞定
- 如何在roblox studio中1:1导入真实世界的地形?
- 求解,lua_resume的第二次调用继续执行协程问题。
- 【上海普陀区】内向猫网络招募【Skynet游戏框架Lua后端程序员】
- SF爱好求教:如何用lua实现游戏内调用数据库函数实现账号密码注册?
- Lua实现网站后台开发
- LUA错误显式返回,社区常见的规约是怎么样的
- lua5.3下载库失败
- 请问如何实现文本框内容和某个网页搜索框内容连接,并把网页输出来的结果反馈到另外一个文本框上
- lua lanes多线程使用
- 一个kv数据库
- openresty 有没有比较轻量的 docker 镜像
- 想问一下,有大佬用过luacurl吗
- 在Lua执行过程中使用Load函数出现问题
- 为什么 neovim 里没有显示一些特殊字符?
- Lua比较两个表的值(不考虑键的顺序)
- 有个lua简单的项目,外包,有意者加微信 liuheng600456详谈,最好在成都
- 如何在 Visual Studio 2022 中运行 Lua 代码?

如果我理解你的问题正确的话,可以尝试以下代码:
local unpack = unpack or table.unpack -------------------------------------------------------------------------------- function min(...) -- 返回所有元素的最小值 local ans = select(1,...) if type(ans) == 'table' then ans = min(unpack(ans)) end for _,n in ipairs { select(2,...) } do if type(n) == 'table' then n = min(unpack(n)) end if n < ans then ans = n end end return ans end -------------------------------------------------------------------------------- function max(...) -- 返回所有元素的最大值 local ans = select(1,...) if type(ans) == 'table' then ans = max(unpack(ans)) end for _,n in ipairs { select(2,...) } do if type(n) == 'table' then n = max(unpack(n)) end if n > ans then ans = n end end return ans end -------------------------------------------------------------------------------- function pt(t) print('{'..table.concat(t,', ')..'}') end -------------------------------------------------------------------------------- function adjust(t,val) if min(t)+val < 32 or max(t)+val > 512 then return t end local ans = {} for _,x in ipairs(t) do ans[#ans+1] = x+val end return ans end --============================================================================== -- 测试 --============================================================================== data = {33, 122, 97, 64, 222, 314, 90, 39, 63, 44, 312, 502, 34, 409, 111, 212} pt(data) --原始数据 data=adjust(data,-1) pt(data) data=adjust(data,-1) pt(data) data=adjust(data,10) pt(data) data=adjust(data,1) pt(data) data=adjust(data,1) pt(data)