Stáhnout: 2.4.1_6.pl  SWISH   Zobrazit: jednoduše   2.4.1_6.py

% nacteni:
/* ['2.4.1_6.pl']. */

append([],L,L).
append([H|T1],L2,[H|T]) :- append(T1,L2,T).

% demonstracni vypis

  % abychom se vyhli varovanim "Redefined static procedure ..."
:- dynamic
       write_all_X/3,
       start/0.
       
write_all_X(Goal,X,Name):-
            call(Goal),write('  '),write(Name),write(' = '),write(X),nl,fail.
write_all_X(_,_,_).

write_all_XY(Goal,X,XName,Y,YName):-
            call(Goal),write('  '),write(XName),write(' = '),write(X),
                       write('  '),write(YName),write(' = '),write(Y),
                       nl, fail.
write_all_XY(_,_,_,_,_).

start:- 
    write('Prace se seznamy - append'),nl,
    write('-------------------------------'),nl, nl,
    write('vicesmernost predikatu append:'),nl,    
    write('Vysledek volani "append([a,b],[c,d],L)":'),nl,
    write_all_X(append([a,b],[c,d],L), L, 'L'),nl,

    write('Vysledek volani "append(X,[c,d],[a,b,c,d ]).":'),nl,
    write_all_X(append(X,[c,d],[a,b,c,d ]), X, 'X'),nl,

    write('Vysledek volani "append(X,Y,[a,b,c])":'),nl,
    write_all_XY(append(X,Y,[a,b,c]), X, 'X', Y, 'Y'),nl.

?-start.

:- retractall(write_all_X/3).
:- retractall(start/0).

#!/usr/bin/env python
# encoding=utf-8 (pep 0263)

from linked_lists import LinkedList, Cons, Nil

def append(xs, ys):
    if xs == Nil:
        return ys
    else:
        return Cons(xs.head, append(xs.tail, ys))

def append_anyXs(ys, zs):
    if ys == zs:
        return Nil
    if zs == Nil:
        raise ValueError("ys neni sufixem zs")
    return Cons(zs.head, append_anyXs(ys, zs.tail))

def append_anyXsYs(zs):
    yield ([], zs)
    if zs != Nil:
        for xs, ys in append_anyXsYs(zs.tail):
            yield (Cons(zs.head, xs), ys)

# demonstracni vypis
if __name__ == "__main__":
    print("Prace se seznamy - append")
    print("-------------------------------\n")
    print("vicesmerne implementace funkce append:\n")
    print("Vysledek volani append(LinkedList(['a', 'b']), LinkedList(['c', 'd'])): \n\t%s\n" % \
            append(LinkedList(['a', 'b']), LinkedList(['c', 'd'])))

    print("Vysledek volani append_anyXs(LinkedList(['c', 'd'])," +
          "LinkedList(['a', 'b', 'c', 'd'])): \n\t%s\n" % \
            append_anyXs(LinkedList(['c', 'd']), LinkedList(['a', 'b', 'c', 'd'])))

    print("Vysledek volani append_anyXsYs(LinkedList(['a', 'b', 'c'])): \n\t%s\n" % \
            list(append_anyXsYs(LinkedList(['a', 'b', 'c']))))

 Stáhnout: 2.4.1_6.pl  SWISH   Zobrazit: jednoduše   2.4.1_6.py