Saludos
%Enviando todos los saludos que quieran...
:- op(700,xfy,==>).
eq(X,Z) :- eq1(X,Y), eq(Y,Z).
eq(X,X).
eq1(X,Y) :- X ==> Y.
eq1([X|Y],[X1|Y]) :- eq1(X,X1).
eq1([X|Y],[X|Y1]) :- eq1(Y,Y1).
%eq1(take(N,Ls),take(N1,Ls)) :- eq1(N,N1).
eq1(take(N,Ls),take(N,Ls1)) :- eq1(Ls,Ls1).
take(0,_) ==> [].
take(N,[A|Ls]) ==> [A|take(N1,Ls)] :- N1 is N-1.
saludos ==> [hola|saludos].
%?- eq(take(5,saludos),Ls).
Este comentario ha sido eliminado por el autor.
ResponderEliminar%Contiene el Fibonacci creado a partir del generador de numeros naturales
Eliminar:-op(701, xfy, ==>).
red(X,Y):-eq2(X,Y).
eq2(X, Z):-eq1(X, Y), eq2(Y,Z).
eq2(X, X).
eq1(X,Y):-X==>Y.
eq1([X|Y],[X1|Y]):-eq1(X,X1).
eq1([X|Y],[X|Y1]):-eq1(Y,Y1).
eq1(take(N,L), take(N,L1)):-eq1(L,L1).
eq1(A+B,A1+B):-eq1(A,A1).
eq1(A+B,A+B1):-eq1(B,B1).
%red(take(5,ones),X).
ones ==> [1|ones].
two ==> [2,2|two].
cantor(e)==>e.
cantor(h)==>[h,e,h].
%red(take(300,infi(1)),X).
infi(N) ==> [N|infi(N1)]:- N1 is N+1.
%red(suma([1,2,3]),X).
suma([])==>0.
suma([A|Ls])==>A+suma(Ls).
%% Estructura take
take(0,Ls)==>[].
take(N,[X|Ls])==> [X|take(N1,Ls)]:-N1 is N-1.
X+Y ==> Z:-Z is X+Y.
X*Y ==> Z:-Z is X*Y.
X/Y ==> Z:-Z is X/Y.
listaones([1|Ls]):-listaones(Ls).
%red(take(300,fibo([1,1])),X).
fibo([])==>0.
fibo([A,B|Ls])==>[N1|fibo(Ls1)]:-N1 is A+B,append(Ls,[B,N1],Ls1).
%Ls1=Ls++B,N1
Qué no sobra fibo()==>0?
ResponderEliminarTiene razón, esa linea esta de más y funciona solo con :
Eliminarfibo([A,B|Ls])==>[N1|fibo(Ls1)]:-N1 is A+B,append(Ls,[B,N1],Ls1).
APORTE:
ResponderEliminarA partir de los números de fibonacci y las fracciones continuas podemos obtener la razón áurea o número de oro, mientras más grande sea el número de fibonacci más se acerca al valor. Por ejemplo:
para fibonacci(2), tenemos:
1+1 fibonacci(0)
-
1 fibonacci(1)
----------------------------
R = 2
para fibonacci(3)
1 + 1 fibonacci(1)
----
1+1 fibonacci(2)
-------------------------
R = 1.5 , así sucesivamente.
ALGUNAS SALIDAS:
?- fib(3,2).
Fraccion continua:
1+1
--
1+1
--
1
Numeros de Fibonacci:
1+1
-
2
Razon aurea: 1.5
true .
?- fib(9,2).
Fraccion continua:
1+1
--
1+1
--
1+1
--
1+1
--
1+1
--
1+1
--
1+1
--
1+1
--
1
Numeros de Fibonacci:
1+21
-
34
Razon aurea: 1.6176470588235294
true .
###### CÓDIGO ################################
% ESCRIBE LAS FRACCIONES
f(N,H):- N is 0,write(1).
f(N,H):- N is 1,write(1).
f(N,H):- N>1,
f(0,H),
write('+'),
f(1,H),
nl,
tab(H),
write('--'),
nl,
N1 is N-1,
tab(H),
H1 is H+2,
f(N1,H1).
% EL FIBONACCI
fibonacci(1,1).
fibonacci(0,1).
fibonacci(N,Res):-N1 is N-1,
N2 is N-2,
fibonacci(N1,Res1),
fibonacci(N2,Res2),
Res is Res2+Res1.
fib(N,H):-
write('Fraccion continua: '),nl,
f(N,H),nl,
write('Numeros de Fibonacci: '),nl,
f(0,H),
write('+'),
N1 is N-2,
N2 is N-1,
fibonacci(N1,R1),
fibonacci(N2,R2),
write(R1),nl,tab(H),write('-'),nl,tab(H),write(R2),
R3 is 1+(R1/R2),nl,write('Razon aurea: '),write(R3).
############################################
Dado que los problemas son diferentes, ameritaría abrir una nueva entrada, Victor.
Eliminar