Se agrega funcionalidad para movernos en el eje vertical y poder buscar palabras hacia a arriba o hacia a abajo.
Se realizan pequeños test con la sopa de letras de 100x100 siguiente: https://github.com/QuantumInformatik/mips-sopaletra/blob/master/archivos/sopaJava.txt
Además se corrige funcionalidad para finalizar el programa mediante interacción con el usuario.
Los registros $t6
y $t7
juegan un papel importante a la hora de movernos sea en el eje X o Y.
El registro $t7
guarda el valor o el coeficiente de movimiento horizontal, es decir, cuantas posiciones debemos movernos hacia la izquierda o derecha para encontrar un carácter diferente al 32 (espacio, quien delimita las columnas). Se asume que no se limpiaran los espacio de la sopa de letras por tanto addi $t7, $zero, 2
y siendo $t7
un valor constante.
El registro $t6
guarda el valor o el coeficiente de movimiento vertical, es decir, cuantas posiciones debemos movernos hacia arriba o hacia a abajo para encontrar un carácter en la misma columna. Este coeficiente se calcula con la siguiente formula:
Sea:
cmv = coeficiente de movimiento vertical
cf = cantidad de caracteres por fila (sin incluir el caracter 32 (espacio) y el caracter 13 (\r) y 10 (\ n))
ce = cantidad de espacio por fila (si cf = 4, entonces ce=cf-1, cf =n, ce=n-1)
s = simbolos de finalización, puede ser \r\n o solo \r o solo \n, se asumen que serán \r\n, por tanto s=2 (considerada constante).
cmv = cf + ce + s -> cf +ce + 2
Entonces si nuestra sopa de letra es de 3 filas x 4 columnas, tenemos que:
cf = 4 (es decir 4 es el número de caracteres por fila)
ce = 4-1 = 3
s = s
cmv = 4+3+2 = 9
Para una sopa de letras de 100x100, sería:
cmv = 100 + 99 +2 = 201