我正在尝试将两个长度相等的表与一个函数进行比较,因为我不知道有任何其他方法可以做到这一点。但是,使用以下功能,它无法注册,我不知道为什么。我希望有人可以提供对此问题的见解,或者有更好的方法来比较这两个表。
这些表正在填充以下代码:
str = "parameters determined by program (all digits)"
tableone = {}
for word in str:gmatch("%d") do table.insert(tableone,word) end
这两个表是相同的,当然,除了各个表的名称。表格已正确填充,并在我打印时正确显示。为了这个问题,这里有两张表:
tableone = {}
tabletwo = {}
for i=1,4 do table.insert(tableone, i) end
for i=1,4 do table.insert(tabletwo, i) end
显然,这两个表将彼此相等。我写的比较索引表的函数如下:
function comparetables(t1, t2)
matchct = 0
for i=1,#t1 do
if t1[i] == t2[i] then
matchct = matchct + 1
end
if matchct == #t1 then
return true
end
end
我试着做
print(comparetables(tableone,tabletwo))
看看它是否会打印“true”但没有运气。对我来说,它似乎应该没有问题。然而事实并非如此。我错过了什么?我已经尝试过搜索类似 table.compare 函数的东西,有人可能已经写过,但找不到这样的运气。感谢您的任何建议!
附加信息:
我比较表格的原因是主控类型的游戏。这意味着在比较表格时必须适用以下三个规则。我创建的功能只是让我开始,以为我可以从那里开始工作。
- 比较表格时,如果数字匹配,则 Ccount 增加 1。
- 比较表时,如果值存在于不同的索引位置,则将 Pcount 加 1
例如,对于值 {1, 3, 3, 4} 和猜测值 {4, 4, 3, 1} 的表,它将返回 Pcount 2(一个 4 和 1)和一个 Ccount 1 (第三位的三个)。我认为最难的部分之一是通过比较来识别猜测中的第二个 4 根本不应该增加 Pcount。