lua - 使用循环解决如果数字 < 超过 200 个先前的数字,则返回 1
问题描述
我正在用 lua 编写一个小程序,我希望能得到一些关于什么是最正确的方法来解决这个问题。基本上,如果我的数字大于最后 200 个数字,则返回 1,否则返回 0。
我认为最好的方法是循环?假设 x 是我的数字在表格中的位置,然后我想检查它是否大于前 200 个数字,如果是则返回 1,否则返回 0。
while (x > x-a)
do
isbigger = 1;
a = a+1;
return isbigger;
end
我不确定这是否是正确的语法,它在技术上也会在每次通过循环时返回 1,如果我的数字大于前一个数字 200,我只想在最后返回它。另外,如果它是假的(我猜是休息),如何摆脱循环?感谢您的帮助,祝您有美好的一天!
解决方案
如果要循环一个值数组,则应使用 for 循环。您也不想isbigger
从循环内部返回,因为它会过早结束循环
local last = 10
local myNumber = 123
local numbers = {}
--Setup our example numbers table
math.randomseed(os.clock())
for i = 1, 40 do
numbers[i] = math.random(1,200)
end
--Run comparison on our the last x values
local isBigger = true
for i = #numbers, #numbers - last, -1 do
print(myNumber, numbers[i], myNumber > numbers[i])
isBigger= isBigger and myNumber > numbers[i]
end
print("isBigger is: " .. isBigger)
return isBigger and 1 or 0
示例输出
123 181 false
123 6 true
123 77 true
123 78 true
123 145 false
123 130 false
123 104 true
123 114 true
123 6 true
123 4 true
123 15 true
isBigger is: false
上面的 for 循环更适合理解正在发生的事情,但这个循环更适合使用,因为一旦找到显示myNumber
不更大的结果,它将退出。
local isBigger = true
for i = #numbers, #numbers - last, -1 do
print(myNumber, numbers[i], myNumber > numbers[i])
if not (myNumber > numbers[i]) then
isBigger = false
break
end
end
推荐阅读
- swift - 协议中定义的变量不符合多个协议
- ruby - Is there a way to abort a test cleanly?
- macos - ssh concatenating keyboard characters
- javascript - 正则表达式,包括 unwated 数字
- java - shared prefrence does not save correctly
- load-testing - How to append apis with incrementing numbers
- python - python reading byte by byte from bin file takes too long
- javascript - 如何在 if-else 语句中考虑 4 个变量
- python - 导入突然不再工作 - 没有名为 xy 的模块
- apache-spark - Spark 在分区内创建额外的分区