Estoy intentando comparar dos tablas de igual longitud con una función, ya que no conozco otra forma de hacerlo. Sin embargo, con la siguiente función, no se puede registrar, y no tengo idea de por qué. Espero que alguien pueda proporcionar información sobre este problema o que tenga una mejor manera de comparar las dos tablas.Comparación de dos tablas de índice por valor de índice en lua
Las tablas se rellenan con el siguiente código:
str = "parameters determined by program (all digits)"
tableone = {}
for word in str:gmatch("%d") do table.insert(tableone,word) end
Es idéntica para ambas tablas, excepto, por supuesto, los nombres de las tablas individuales. Las tablas se están llenando correctamente y se muestran correctamente cuando las imprimo. Aquí hay dos mesas para el bien de esta pregunta:
tableone = {}
tabletwo = {}
for i=1,4 do table.insert(tableone, i) end
for i=1,4 do table.insert(tabletwo, i) end
Obviamente, estos dos mesas van a ser iguales entre sí. La función que escribí para comparar las tablas de índice es el siguiente:
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
He intentado hacer
print(comparetables(tableone,tabletwo))
para ver si va a imprimir "verdadero", pero sin suerte. Para mí, parece que debería funcionar sin problemas. Sin embargo, no es así. ¿Qué me estoy perdiendo? Intenté buscar algo así como una función de tabla.compare que alguien ya haya escrito, pero no tuve tanta suerte encontrando una. Gracias por cualquier sugerencia!
Información adicional:
La razón por la que estoy comparando las tablas es para un juego de tipo mastermaind. Eso significa que se deben aplicar las siguientes tres reglas al comparar tablas. La función que creé era solo para comenzar, pensando que podría trabajar desde allí.
- Al comparar las tablas, si los números coinciden, cCount aumenta en 1.
- Al comparar tablas, si existe el valor en una posición de índice diferente, incremento PCOUNT por 1
Por ejemplo , con una tabla de valores {1, 3, 3, 4} y una suposición de {4, 4, 3, 1}, devolvería el recuento de 2 (el 4 y el 1) y una cuenta de 1 (el tres en la tercera posición). Creo que una de las partes más difíciles va a obtener la comparación para reconocer que los segundos 4 en la conjetura no deberían incrementar el Pcount en absoluto.
¿De dónde viene el 'yo'? Acabo de probarlo y me devolvió un error que decía que intentaba indexar uno local, un valor nulo. Editar: Oh, espera, lo veo en el primer bloque. Es extraño que devuelva un error, sin embargo. – Josh
@Josh ¿dónde ves un error por esto? (He probado este en mi copia de lua y funciona sin error). –
(\ n solo indica la nueva línea ya que los comentarios no permiten líneas múltiples) Usando wxLuaeditor y ambas secciones del código anterior, devuelve esto: Estado 1 es: \ n Error: Lua: Error al ejecutar el fragmento \ n [cadena "* untitled.lua"]: 18: intento de indexar el "self" local (un valor nulo) \ n traceback de la pila: \ n [cadena "* untitled.lua"]: 18: en la función 'imprimir' \ n [cadena "* untitled.lua"]: 37: en el fragmento principal – Josh