• Viernes 19 de Abril de 2024, 03:27

Autor Tema:  Re: necesito ayuda con prolog  (Leído 3696 veces)

effe

  • Nuevo Miembro
  • *
  • Mensajes: 1
    • Ver Perfil
Re: necesito ayuda con prolog
« en: Domingo 26 de Enero de 2003, 23:00 »
0
Necesitaba ayuda para implementar un laberinto en Prolog.
Si pudieras mandarme un ejemplo pa ver como va te lo agradeceria mucho... Es para presentar unas practicas de prolog en la facultad

De Profundiis

  • Miembro activo
  • **
  • Mensajes: 89
    • Ver Perfil
necesito ayuda con prolog
« Respuesta #1 en: Viernes 7 de Febrero de 2003, 15:57 »
0
Hola effe,
aclárame lo del laberinto.

¿Quieres que tu programa dibuje un laberinto y puedas moverte por él o solo quieres representarlo formalmente mediante hechos y reglas?

Si es lo primero, no tengo ni idea, nunca he implementado aplicaciones con gráficos usando prolog.

Si es lo segundo... puedes representar mediante hechos lo siguiente:

1. una tabla o mapa con la longitud y anchura del laberinto, no sé... limite(x1,y1,x2,y2), por ejemplo, donde las x e y no serían variables, sino valores constantes.

2. representar los huecos dentro del mapa con sus coordenadas (o representar las "paredes"), por ejemplo... hueco(X,Y).

3. las reglas para moverse por el laberinto podrían ser cuatro: arriba, abajo, izquierda y derecha. De modo que solo podrías ir a un hueco del laberinto, sin salirte de los limites. Algo así:

   arriba :- pos(X,Y), hueco(X,Y+1), enmapa(X,Y+1), !.

La función "enmapa" podría calcular si el punto está o no dentro del mapa...

   enmapa(X,Y) :- limite(x1,y1,x2,y2), X<x2, X>x1, Y<y1, Y>y2.

Bueno, el predicado de corte (!) quizás no haga falta. Se supone que pos es la posición actual. El problema sería cómo actualizar la posición con cada movimiento, quizás añadiendo...

   arriba :- pos(X,Y), hueco(X,Y+1), enmapa(X,Y+1), retract(pos(X,Y)), assert(pos(X,Y+1)), !.

Y así seguramente sí haga falta el predicado de corte.

Bueno, no sé si te habrá servido de algo, pero ahora mismo no puedo ponerme de lleno con ello y tampoco soy un experto en prolog, lo siento.

Un saludo.