|
Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.
Mensajes - noqueteden
Páginas: [1]
1
« en: Viernes 27 de Mayo de 2005, 03:36 »
Es una buena idea. Muchas gracias. He intentado modelar tu idea de esta forma: %asignacion de valor-literal de la fruta(la pera es 0,el limon es 1,...) fruta(0,pera). fruta(1,limon). fruta(2,kiwi). fruta(3,lima). fruta(4,coco). fruta(5,fresa). fruta(6,melon). :- %inicializacion de los booleanos para saber si una fruta se ha usado ya o no retractall(usado(_,_)), assert(usado(0,0)), assert(usado(1,0)), assert(usado(2,0)), assert(usado(3,0)), assert(usado(4,0)), assert(usado(5,0)), assert(usado(6,0)), %inicializacion de las "casillas"(numero(_,_,_)) retractall(numero(_,_,_)), assert(numero(0,0,nada)), assert(numero(0,1,nada)), assert(numero(0,2,nada)), assert(numero(0,3,nada)), assert(numero(1,0,nada)), assert(numero(1,1,nada)), assert(numero(1,2,nada)), assert(numero(1,3,nada)), assert(numero(2,0,nada)), assert(numero(2,1,nada)), assert(numero(2,2,nada)), assert(numero(2,3,nada)), assert(numero(3,0,nada)), assert(numero(3,1,nada)), assert(numero(3,2,nada)), assert(numero(3,3,nada)). %deberia asignar las 7 frutas que existen en 7 "casillas" al azar. genera(A) :- A > 0, random(0,3,X), random(0,3,Y), numero(X,Y,nada), dame_fruta(J), retract(numero(X,Y,nada)), fruta(J,D), assert(numero(X,Y,D)), B is A-1, genera(B). %devuelve aleatoriamente una fruta no usada hasta el momento dame_fruta(J) :- aleatorio_fruta(J), retract(usado(J,0)), assert(usado(J,1)). %devuelve una fruta no usada aleatorio_fruta(J) :- alea(J),no_usado(J). %genera al azar un valor entre 0 y 6(posibles valores de las frutas) alea(J) :- random(0,6,J). %indica si un elemento de "usado" es 0(no usado) no_usado(J) :- usado(J,0). %mostrar por pantalla aquellas posiciones que contienen frutas muestra(A,B,J) :- fruta(_,J), numero(A,B,J). %la ejecución por consola deberia ser: %?- [ej]. %?- genera(7). %?- muestra(A,B,J). %Tras lo cual se deberian suceder 7 posiciones de "casillas"(numero(_,_,_)) %con un valor de fruta distinto cada una de ellas.
El problema es que cuando se genera aleatoriamente un valor para tomar una fruta y esta ya ha sido usada(usado(C,1)) se devuelve falso y por tanto se interrumpe el proceso de asignacion de frutas a "casillas"(numeros). ¿De qué forma podría solucionarlo? Agradeciendo la respuesta, envio un saludo.
2
« en: Viernes 27 de Mayo de 2005, 03:35 »
Es una buena idea. Muchas gracias. He intentado modelar tu idea de esta forma: ____________________________________________________________________ %asignacion de valor-literal de la fruta(la pera es 0,el limon es 1,...) fruta(0,pera). fruta(1,limon). fruta(2,kiwi). fruta(3,lima). fruta(4,coco). fruta(5,fresa). fruta(6,melon). :- %inicializacion de los booleanos para saber si una fruta se ha usado ya o no retractall(usado(_,_)), assert(usado(0,0)), assert(usado(1,0)), assert(usado(2,0)), assert(usado(3,0)), assert(usado(4,0)), assert(usado(5,0)), assert(usado(6,0)), %inicializacion de las "casillas"(numero(_,_,_)) retractall(numero(_,_,_)), assert(numero(0,0,nada)), assert(numero(0,1,nada)), assert(numero(0,2,nada)), assert(numero(0,3,nada)), assert(numero(1,0,nada)), assert(numero(1,1,nada)), assert(numero(1,2,nada)), assert(numero(1,3,nada)), assert(numero(2,0,nada)), assert(numero(2,1,nada)), assert(numero(2,2,nada)), assert(numero(2,3,nada)), assert(numero(3,0,nada)), assert(numero(3,1,nada)), assert(numero(3,2,nada)), assert(numero(3,3,nada)). %deberia asignar las 7 frutas que existen en 7 "casillas" al azar. genera(A) :- A > 0, random(0,3,X), random(0,3,Y), numero(X,Y,nada), dame_fruta(J), retract(numero(X,Y,nada)), fruta(J,D), assert(numero(X,Y,D)), B is A-1, genera( . %devuelve aleatoriamente una fruta no usada hasta el momento dame_fruta(J) :- aleatorio_fruta(J), retract(usado(J,0)), assert(usado(J,1)). %devuelve una fruta no usada aleatorio_fruta(J) :- alea(J),no_usado(J). %genera al azar un valor entre 0 y 6(posibles valores de las frutas) alea(J) :- random(0,6,J). %indica si un elemento de "usado" es 0(no usado) no_usado(J) :- usado(J,0). %mostrar por pantalla aquellas posiciones que contienen frutas muestra(A,B,J) :- fruta(_,J), numero(A,B,J). %la ejecución por consola deberia ser: %?- [ej]. %?- genera(7). %?- muestra(A,B,J). %Tras lo cual se deberian suceder 7 posiciones de "casillas"(numero(_,_,_)) %con un valor de fruta distinto cada una de ellas. ____________________________________________________________________ El problema es que cuando se genera aleatoriamente un valor para tomar una fruta y esta ya ha sido usada(usado(C,1)) se devuelve falso y por tanto se interrumpe el proceso de asignacion de frutas a "casillas"(numeros). ¿De qué forma podría solucionarlo? Agradeciendo la respuesta, envio un saludo.
3
« en: Lunes 23 de Mayo de 2005, 01:10 »
Muchas gracias por la idea. Es interesante. Por cierto necesito generar aleatoriamente la ubicacion de inicio del explorador y la de la salida, ademas de ciertos objetos ubicados en parte del camino. Agradeceria un ejemplo de sencillo de como plasmar eso a nivel de codigo(reglas y hechos). Muchas gracias anticipadas.
Un saludo.
4
« en: Viernes 20 de Mayo de 2005, 16:19 »
Hola. Estoy atareado en la implementación de un laberinto en Prolog. Agradeceria comentarios, idea y sugerencias. Quizas pudiera orientarme codigo fuente sobre algo parecido. He decidido comenzar por la representación del laberinto y el explorador que debe salir del mismo. Una de mis dudas es que he de situar de forma aleatoria el explorador en el laberinto y la salida, es decir, en cada ejecución la ubicación del explorador y de la salida es decidida de forma arbitraria(aleatoria) por el programa.
Espero vuestras respuestas.
Muchas gracias.
Páginas: [1]
|
|
|