¿Cómo declarar una matriz de 8x8?

Imagen de dac317
0 puntos

El laberinto es en scripts de linux, se supone que se tiene un laberinto de 8x8 (es decir una matriz), en el cual está un ratón y varios trozos de queso. El laberinto tiene paredes que no permiten que el ratón avance en alguna dirección de las posibles. Las direcciones que puede tomar el ratón es: arriba, abajo, izquierda, derecha.

Al inicio del juego, tanto las paredes como el ratón y los trozos de queso serán asignados en forma aleatoria. Los trozos de queso que se tendrán estarán en el rango entre 1-3.

El ratón deberá tomar todos los trozos de queso que existan en el laberinto y deberá ser capaz de poder encontrar una ruta alterna para salir del mismo. Por lo tanto el laberinto tendrá una salida para que cuando el ratón haya terminado de comer logre salir.

1. El movimiento del ratón se valorará en cuatro posibles movimientos (utilizando recursión) que son los siguientes:

a. F, C++. Derecha

b. F++, C. Abajo

c. F--,C, Arriba

d. F, C—, Izquierda

2. Se deberá contar con un menú inicial que permita dar opción a:

a. El laberinto pueden plantearse con un caso inicial hipotético, que ya contenga los diferentes elementos planteados representados en la matriz. Es decir puede partir del hecho de que ya cada uno de los elementos existen y que tienen la ubicación que ustedes les han dado.

b. Mostrar soluciones. Deberá mostrar todas las posibles soluciones que hayan viables para poder comerse los trozos de queso. Para el caso del punto anterior, deberán de hacer un ciclo con pausas que muestre como el ratón se va desplazando hasta poder obtener los trozos de queso deseado.

Símbolos:

*=pared

R=ratón

Q=queso

                                                                

Universidad Nacional de Costa Ri

Imagen de slap
+1
0
-1

Podías haber puesto en el cuerpo del post:

Elaboración laberinto

así te habría salido aún más corto el post. :P

Voy a consultar mi bola de cristal y te digo algo...

Saludos.

+1
0
-1

Saludos.

0000 start out (+FD),A
           ld  BC, +7FFF
           jp 03CB, RAM-CHECK

http://www.injiniero.es

Imagen de joseluis
+1
0
-1

Como ya te han dicho sería un poco más sencillo si hubieras aportado algo de información sobre lo que quieres hacer y en qué lenguaje lo quieres hacer, así que a la espera de que quieras aportar esos datos te voy a poner un ejemplo de como se podría simular en bash una matriz, y digo simular porque en bash no existen matrices y lo único que hay son vectores, también llamados arrays. La idea para hacerlo serviría para cualquier otro lenguaje que no disponga de matrices pero sí vectores:

#/!bin/bash

# Vamos a intentar representar una matriz 4x4
# La idea es que el contenido inicial de la matriz sea similar a:
#
# "0 0" "0 1" "0 2" "0 3"
# "1 0" "1 1" "1 2" "1 3"
# "2 0" "2 1" "2 2" "2 3"
# "3 0" "3 1" "3 2" "3 3"
#
# y si ponemos cada fila a continuación de la anterior lo tendríamos en forma de vector:

matriz=("0 0" "0 1" "0 2" "0 3" "1 0" "1 1" "1 2" "1 3" "2 0" "2 1" "2 2" "2 3" "3 0" "3 1" "3 2" "3 3")

# Una vez que tenemos definido nuestro vector con el contenido de la matriz nuestro problema es acceder
# al vector utilizando una notación de matrices.

# Declaramos una variable donde guardaremos el tamaño de cada fila de la matriz.
tamfila=4

#
# La relación entre las distintas posiciones del vector y de la matriz sigue la siguiente regla:
# La posición 0,0 de la matriz se corresponde con la 0 del vector (la numeración empieza en 0),
# la posición 1,2 de la matriz se corresponde con la 6 del vector, ...
# y generalizando la posición i,j de la matriz se corresponde con la j+n*i 
# siendo n el tamaño de cada fila de la matriz (en este ejemplo 4)
#


# El valor de la posición 2,3 de la matriz es:
echo ${matriz[$((3+(${tamfila}*2)))]}

# El valor de la posición 1,0 de la matriz es:
echo ${matriz[$((0+(${tamfila}*1)))]}

# El valor de la posición 3,1 de la matriz es:
echo ${matriz[$((1+(${tamfila}*3)))]}
# Asignamos un nuevo valor a la posición 3,1
matriz[$((1+(${tamfila}*3)))]="nuevo valor 3 1"
# El nuevo valor de la posición 3,1 de la matriz es:
echo ${matriz[$((1+(${tamfila}*3)))]}

Imagino que lo anterior no te servirá para hacer tu laberinto, entre otras cosas porque no creo que lo quieras hacer en bash, pero teniendo en cuenta lo poco precisa de tu pregunta tampoco se puede esperar una respuesta útil :P


Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

+1
0
-1

Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

Imagen de joseluis
+1
0
-1

Para la próxima vez que se te pida información sobre tu problema incorporala en un comentario en lugar de editar tu hilo, porque tal como lo has hecho cuando alguien lea este hilo no entenderá por qué se te pide más información, incluso alguno se podrá llevar alguna idea equivocada.

En cuanto a tu problema inicial (título del hilo, es decir ¿Cómo declarar una matriz de 8x8?) creo que quedaría respondido con el ejemplo que te he puesto para una matriz 4x4 en bash (según dices lo tienes que hacer con script, supongo que te refieres a shell-script, por ejemplo bash).

Una posible aproximación a tu problema sería ver como rellenar de forma óptima la matriz para que cada elemento te de información sobre las paredes que hay, así como de la existencia de queso.
Una idea, que tal vez no sea la mejor, podría ser que utilizaras la siguiente codificación:

  • 1 - pared arriba
  • 2 - pared abajo
  • 4 - pared izquierda
  • 8 - pared derecha
  • 16 - hay queso

así si un elemento de la matriz tiene el valor 14 (2+4+8) significa que tiene paredes abajo, a la izquierda y a la derecha y que no hay queso, mientras que una con el valor 19 (1+2+16) significaría que tienes paredes arriba y abajo y que además hay queso.

El resto te lo dejo para que lo desarrolles tú.


Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado

+1
0
-1

Fdo. Forense asesino, Censor fundamentalista, Fustigador de novatos y Patético maleducado