79797720 Ejercicios Prolog

Páginas: 17 (4153 palabras) Publicado: 25 de marzo de 2015
% Serpiente Sumica

%Lista de digitos
digito([1,2,3,4,5,6,7,8,9]).
functor(j,4).
%serpiente recibe 4 listas
serpiente(j(L1,L2,L3,L4)):-digito(L), retornarLista1(L,L1,Ls1), retornarLista(Ls1,L2,Ls2),
retornarLista(Ls2,L3,Ls3),retornarLista(Ls3,L4,_).
%Retorna una lista de 3 elementos que su sumatoria es 13 y los retorna en una lista
retornarLista1(Aux,[A,B,C],[C|L3]):- member(A,Aux),delete(Aux,A,L1),member(B,L1),
delete(L1,B,L2),member(C,L2), delete(L2,C,L3), 13 =:= A + B + C.
%Retorna una lista de 3 elementos conserbando el 1er elemento de la lista dada y la sumatoria de
sus elementos es 13 y retorna la lista dada sin los elementos de las segunda
retornarLista(Aux,[A,B,C],[C|L3]):- delete(Aux,A,L1),member(B,L1), delete(L1,B,L2),member(C,L2),
delete(L2,C,L3), 13 =:= A + B + C.

% OchoNumeros en Linea

% la lista devuelve los numeros del 1 al 8
lista([1,2,3,4,5,6,7,8]).

% devuelve una lista con digitos del 1 al 8 de forma que la diferencia, en un orden o en otro, entre
dos números vecinos, no sea nunca menor que 4
ochoEnLineaA(V):-lista(L),quitarElem(L,E,Ls), ochoAuxA([E|Ls],[E|S]), retornarLista([E|S], V).

% se encarga de generar y verificar las condiciones de las listasochoAuxA([X],[X]):-!.
ochoAuxA([EL1|L1],[EL1|Resto]):- quitarElem([EL1|L1],EL1,Ls), quitarElem(Ls,EL2,Ls1), abs(EL1EL2) >=4, ochoAuxA([EL2|Ls1],Resto).

% quita el elemento E de la lista L
quitarElem(L,E,Ls):- member(E,L), delete(L,E,Ls).

% devuelve la lista pasada
retornarLista([E|S],[E|S]).

% Rueda Numerica

% devuleve listas con digitos del 1 al 9, de manera que todas las líneas de tres dígitossumen el 15
ruedaNumerica(L1, L2, L3, L4):- digitos(L), quitarElem(L, E, Ls), obtenerRueda(E, Ls, L1, L2, L3, L4).

% obtiene una rueda con el elemento E como centro

obtenerRueda(E, L, L1, L2, L3, L4):- parteDeRueda(E, L, L1, Ls), parteDeRueda(E, Ls, L2, Ls1),
parteDeRueda(E, Ls1, L3, Ls2), parteDeRueda(E, Ls2, L4, _).

% devuelve la lista que cumple la condición de que sume 15
parteDeRueda(E, L,[El,E,Er], Resto):- quitarElem(L, El, Ls), quitarElem(Ls, Er, Resto), 15 is E + Er +
El.

% Producto con Nueve Numeros

% devuelve listas con digitos del 1 al 9, de manera que el producto resultante sea correcto
productoNueveNumeros(Multiplicando, E, Result):- digitos(L), obtenerMultiplicando(L,
Multiplicando, Ls),
quitarElem(Ls, E, Resto), obtenerResult(Resto,
Result),
Result is Multiplicando *E.

% devuelve el multiplicando
obtenerMultiplicando(L, Multiplicando, Resto):- quitarElem(L, E, Ls1), quitarElem(Ls1, E1, Ls2),
quitarElem(Ls2, E2, Ls3), quitarElem(Ls3, E3,
Resto),
Multiplicando is E*1000 + E1*100 + E2*10 + E3.

% devuelve el resultado de la multiplicacion
obtenerResult(L, Numero):- quitarElem(L, E, Ls1), quitarElem(Ls1, E1, Ls2),
quitarElem(Ls2, E2, Ls3), quitarElem(Ls3, E3,_),
Numero is E*1000 + E1*100 + E2*10 + E3.

% Pares e Impares en una Suma

% devuelve listas de digitos del 1 al 9, colocando los números pares en los cuadrados y los impares
en los círculos del grafico del ejercicio
sumaNueveNumeros(Result):- digitos(L), obtenerOperandoUno(L,
Oper1,Ls),obtenerOperandoDos(Ls, Oper2,Ls2),
cuentaSuma(Ls2,Oper1, Oper2, Result),
write(Oper1 '+' Oper2 '=' Result).

%obtiene el primer operando
obtenerOperandoUno(L,[E,E1,E2],Ls3):- quitarElem(L, E, Ls1),E mod 2 =\= 0,quitarElem(Ls1, E1,
Ls2),E1 mod 2 =:= 0,
quitarElem(Ls2, E2, Ls3),E2 mod 2 =:= 0.

% obtiene el segundo operando

obtenerOperandoDos(L,[E,E1,E2],Ls):- quitarElem(L, E, Ls1),E mod 2 =\= 0,quitarElem(Ls1, E1,
Ls2),E1 mod 2 =\= 0,
quitarElem(Ls2, E2, Ls),E2 mod 2 =:= 0.

% realiza la sumacuentaSuma(Ls2,Oper1, Oper2, [R1,R2,R3]):obtenerResultSum(Oper1,Num1),obtenerResultSum(Oper2,Num2),Result is Num1 + Num2,
R1 is Result // 100 ,quitarElem(Ls2,R1,V), R1 mod 2 =\= 0,
Raux is (Result - R1*100),
R2 is Raux // 10,quitarElem(V,R2,V2), R2 mod 2 =\= 0,
R3 is (Result - (R1*100 + R2*10)),
quitarElem(V2,R3,_),R3 mod 2 =:= 0.

% obtiene el resultado de la suma
obtenerResultSum(L, Numero):- quitarElem(L,...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Ejercicios En Prolog
  • Ejercicios en prolog
  • ejercicios de prolog
  • EJERCICIOS PROLOG
  • Ejercicios Prolog
  • Ejercicios prolog
  • Ejercicio Ejemplo Prolog
  • Ejemplo De Solución A Ejercicio En Prolog

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS