Próbuję porównać dwie tabele o równej długości z funkcją, ponieważ nie znam innego sposobu, aby to zrobić. Jednak z następującą funkcją, nie rejestruje się i nie mam pojęcia dlaczego. Mam nadzieję, że ktoś może zapewnić wgląd w ten problem lub ma lepszy sposób na porównanie obu tabel.Porównywanie dwóch tabel indeksów według wartości indeksu w lua
Tabele są wypełniane za pomocą następującego kodu:
str = "parameters determined by program (all digits)"
tableone = {}
for word in str:gmatch("%d") do table.insert(tableone,word) end
To identyczna dla obu tabel, z wyjątkiem, oczywiście, poszczególnych nazw tabel. Tabele są wypełniane poprawnie i wyświetlane poprawnie po ich wydrukowaniu. Oto dwie tabele dla tego pytania:
tableone = {}
tabletwo = {}
for i=1,4 do table.insert(tableone, i) end
for i=1,4 do table.insert(tabletwo, i) end
Oczywiście te dwie tabele będą sobie równe. Funkcja pisałem porównać tabele indeksu jest następująca:
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
Próbowałem robić
print(comparetables(tableone,tabletwo))
aby zobaczyć, czy to będzie drukować „prawdziwe”, ale bez powodzenia. Dla mnie wygląda na to, że powinien działać bez problemu. A jednak tak nie jest. czego mi brakuje? Próbowałem szukać czegoś takiego jak funkcja table.compare, którą ktoś mógł już napisać, ale nie ma takiego szczęścia w jej znalezieniu. Dzięki za wszelkie sugestie!
Dodatkowe informacje:
Powodem Mam porównanie tabel jest w grze mastermaind typu. Oznacza to, że następujące trzy zasady muszą obowiązywać przy porównywaniu tabel. Stworzona przeze mnie funkcja polegała na tym, że zacząłem działać, myśląc, że mogę pracować od tego miejsca.
- Z porównania tabel, jeśli zespół liczb, Ccount zwiększona o 1.
- Porównując tabel, jeżeli istnieje wartość w innym położeniu, wskazującym Pcount przyrost o 1
Przykładowo , z tabelą wartości {1, 3, 3, 4} i domniemaną wartością {4, 4, 3, 1}, to zwróci Pcount of 2 (the 4 and the 1) i Ccount of 1 (the trzy na trzeciej pozycji). Myślę, że jedną z najtrudniejszych części będzie porównanie, które pozwoli rozpoznać, że drugie 4 w odgadywaniu nie powinno w ogóle zwiększać Pcount.
Skąd pochodzi "ja"? Po prostu wypróbowałem i zwróciło błąd informujący, że próbował indeksować lokalne ja, wartość zerową. Edycja: Och, poczekaj, widzę to w pierwszym bloku. Dziwne, że zwraca błąd. – Josh
@Josh gdzie widzisz błąd? (Testowałem to na mojej kopii lua i działa bez błędów). –
(\ n wskazuje tylko na nowy wiersz, ponieważ komentarze nie zezwalają na multilinie) Używając wxLuaeditor i obu sekcji kodu powyżej, zwraca to: Stan 1 to: \ n Błąd: Lua: Błąd podczas działania porcji \ n [ciąg "* untitled.lua"]: 18: próba indeksowania lokalnego 'self' (wartość zerowa) \ n śledzenie stosu: \ n [string "* untitled.lua"]: 18: w funkcji 'print' \ n [string "* untitled.lua"]: 37: w głównym kawałku – Josh