你如何检查一张桌子上有三个相同的元素(寻找三个L's)?
table = {nil, nil, L, nil, L} -> false
table = {L, L, nil, nil, L} -> true
真的很感激一些帮助!
编辑:好的我已经得到了这个,但是即使有三个或更多的L's(每次检查都这样做五次,它也只输出错误)。对不起,如果我似乎想要获取它的代码,我真的想学习! :)
for k, v in pairs( threeL_table ) do
local count = 0
if k == 'L' then
count = count + 1
end
if count == 3 then
print('true')
else
print('false')
end
end
答案 0 :(得分:0)
我不会给你任何代码,因为你没有表现出任何解决问题的努力。
如何检查表格中是否有三个相同的元素?好吧,你算一算。
循环遍历表格,并为每个不同的值创建一个新计数器。你可以使用另一个表。一旦其中一个计数器达到3,就会知道你有三个相同的值。
答案 1 :(得分:0)
你快到了。您需要针对v
测试值'L'
,而不是键k
。此外,我想你想在扫描结束后只打印一次消息;如果是这样,将if语句放在for循环之外。 (在这种情况下,您也应该在for循环之外定义count
,否则一旦结束就不会看到它。)
local count = 0
for k, v in pairs( threeL_table ) do
if v == 'L' then -- you need to check for the values not the keys
count = count + 1
end
end
if count == 3 then -- move this out of the for-loop
print('true')
else
print('false')
end
答案 2 :(得分:0)
解决此问题的另一种方法。
function detectDup(t,nDup)
table.sort(t)
local tabCount = {}
for _,e in ipairs(t) do
tabCount[e] = (tabCount[e] or 0) + 1
if tabCount[e] >= 3 then
print("The element '" .. e .. "' has more than 3 repetitions!")
return true
end
end
return false
end
print(detectDup({'L', 'L','A','B'},3))
print(detectDup({'L', 'L','A','B','L',},3))