Prolog - Alguien me puede ayudar con estos problemas

 
Vista:

Alguien me puede ayudar con estos problemas

Publicado por angelica (1 intervención) el 19/11/2007 23:09:43
Alguien me podria ayudar a realizar estos dos problemas en prolog

Escriba un una regla recursiva en PROLOG para calcular el valor de la suma que sigue: suma(k, N) = k +(k+1)+(k+2)+ …+N, con k>=0 y k<=N.

Suponga que la lista L tiene varios elementos, escriba un predicado en PROLOG que permita eliminar el k-ésimo elemento de la lista L.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Alguien me puede ayudar con estos problemas

Publicado por Eduardo Castro (23 intervenciones) el 23/11/2007 02:04:25
hola angelica,

la sumatoria esa puede hacerse tambien por una formula y te evitas ciclos de ejecución, sumatoria = ((k*(k+1))/2 - (N*(N+1))/2).
computacionalmente hablando esta solución es mas eficiente, sinembargo puedes hacer una lizta con N-k elementos y haces el proceso recursivo de lectura de la lista que valla desde el primero hasta el ultimo, la idea es que en cada cabezera le asigne el valor del resultado anterior mas uno, iniciando desde k, ya el terminara cuando llegue a n por que se lo dices antes en la lista.

el otro es mas facil aun, sinembargo te te ayudo en algo con ese mañana por que ahora tengo que salir.

Saludos,
Eduardo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

Alguien me puede ayudar con estos problemas

Publicado por ellel (1 intervención) el 04/12/2007 18:47:25
PROGRAMACIÓN LÓGICA
TAREA 2

Realice un programa que:

1. Corte una lista en dos partes (sublistas) dada una posición de corte. Por ejemplo, la consulta:

GOAL
partir([5,8,6,7,9,1], 4, LI, LD).

regresará LI=[5,8,6,7] LD=[9,1]

2. Verifique si los elementos a la izquierda de n son menores o iguales a n y los elementos a la derecha sean mayores. Por ejemplo, la consulta:

GOAL
escalonados(7, [3,3,5,6,7,9,9]).

regresará Yes.

3. Inserte ceros junto a cada elemento de una lista. Por ejemplo, la consulta:

GOAL
insertarCeros([1,2,3,4,5], R).

regresará R=[1,0,2,0,3,0,4,0,5,0]

4. Separe los elementos numéricos de los de caracter y los deje en una lista de listas. Por ejemplo, la consulta:

GOAL
separar([1,'a',2,'b',3,'c'], X).

regresará X=[[1,2,3],['a','b','c']]

5. Copie los elementos de una lista n veces. Por ejemplo, La consulta:

GOAL
veces([1,2,3],3,R).

regresará R=[1,2,3,1,2,3,1,2,3]


6. Simule el juego de batalla naval. Con la siguiente consulta se iniciaría el juego:

GOAL
iniciarBatallaNaval().

y tendrá una interacción como la que se muestra a continuación:

Inicio de la Batalla Naval. Cada flotilla tiene 3 barcos; los tuyos están marcados con "0".

==========
==========
==========
==========
==========
++++++++++
===0======
==========
========0=
==========
=0========

Es tu turno. Da las coordenadas de lanzamiento del misil:
Fila[0-4]: 3
Columna[0-9]: 6
Lanzando misil en coordenadas [3,6]

==========
==========
=====X====
==========
==========
++++++++++
===0======
==========
========0=
==========
=0========

¡Tu disparo acertó a un enemigo! quedan solo 2.

Es turno del enemigo.
Lanzando misil en coordenadas [9,3]

==========
==========
=====X====
==========
==========
++++++++++
===0======
==========
==*=====0=
==========
=0========

El enemigo no te hizo daño alguno.

y así sucesivamente hasta que a alguno de los bandos ya no le quede barco alguno, quien será entonces el que ganará el juego.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar