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).

Comentarios

  1. Este comentario ha sido eliminado por el autor.

    ResponderEliminar
    Respuestas
    1. %Contiene el Fibonacci creado a partir del generador de numeros naturales

      :-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

      Eliminar
  2. Respuestas
    1. Tiene razón, esa linea esta de más y funciona solo con :
      fibo([A,B|Ls])==>[N1|fibo(Ls1)]:-N1 is A+B,append(Ls,[B,N1],Ls1).

      Eliminar
  3. APORTE:
    A 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).
    ############################################

    ResponderEliminar
    Respuestas
    1. Dado que los problemas son diferentes, ameritaría abrir una nueva entrada, Victor.

      Eliminar

Publicar un comentario

Entradas populares de este blog

Resolución básica