Я пытаюсь сравнить две таблицы одинаковой длины с функцией, так как я не знаю другого способа сделать это. Однако со следующей функцией он не может зарегистрироваться, и я не понимаю, почему. Я надеюсь, что кто-нибудь сможет разобраться в этой проблеме или сможет лучше сравнить две таблицы.
Таблицы заполняются следующим кодом:
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))
, чтобы увидеть, будет ли он печатать «истина», но безуспешно.Мне кажется, что он должен работать без проблем. Но это не так. Что мне не хватает? Я попытался найти что-то вроде функции table.compare, которую кто-то, возможно, уже написал, но не нашел такой удачи. Спасибо за любые предложения!
Дополнительная информация:
Я сравниваю таблицы для игры типа mastermaind. Это означает, что при сравнении таблиц должны применяться следующие три правила. Функция, которую я создал, должна была просто помочь мне начать, думая, что я смогу работать оттуда.
Например, с таблицей значений {1, 3, 3, 4} и предположение о {4, 4, 3, 1}, он вернет Pcount, равный 2 (один 4 и 1), и Ccount, равный 1 (три в третьей позиции) . Я думаю, что одна из самых сложных частей - заставить сравнение признать, что вторые 4 в предположении вообще не должны увеличивать Pcount.