Commit 01a32079 authored by Vít Starý Novotný's avatar Vít Starý Novotný
Browse files

added examples 1.2_16 and 2.5.1_10

parent 3dc228e3
Loading
Loading
Loading
Loading

1.2_16.pl

0 → 100644
+22 −0
Original line number Diff line number Diff line
% nacteni:
/* ['1.2_16.pl']. */

tiskniseznam(S):-write('seznam=['),nl,tiskniseznam(S,1).
tiskniseznam([],_):-write(']'),nl.
tiskniseznam([H|T],N):- tab(4),write(N),write(': '),write(H),nl,N1 is N+1,tiskniseznam(T,N1).

% demonstracni vypis

  % abychom se vyhli varovanim "Redefined static procedure ..."
:- dynamic
       start/0.
start:-
    write('Program vytiskne zadany seznam. Napr.:'),nl,nl,
    write('Vysledek dotazu "tiskniseznam([a, b, c])." je:'),nl,
    tiskniseznam([a, b, c]),nl,
    write('Vysledek dotazu "tiskniseznam([a, b, [c1, c2, c3], d, `mezi d a e`, e])." je:'),nl,
    tiskniseznam([a, b, [c1, c2, c3], d, 'mezi d a e', e]).
?-start.

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

1.2_16.py

0 → 100644
+22 −0
Original line number Diff line number Diff line
#!/usr/bin/env python
# encoding=utf-8 (pep 0263)

def tiskniseznam(xs):
    i = 1
    print("seznam=[")
    while xs != None:
        print("    %d: %s" % (i, xs[0]))
        i = i + 1
        xs = xs[1]
    print("]")

# demonstracni vypis
if __name__ == "__main__":
    print("Program vytiskne zadany seznam. Napr.:\n")
    print("Vysledek volani tiskniseznam(('a', ('b', ('c', None)))) je:\n")
    tiskniseznam(('a', ('b', ('c', None))))

    print("\n\nVysledek volani tiskniseznam(('a', ('b', (['c1', 'c2', 'c3'], " +
          "('d', ('mezi d a e', ('e', None))))))). je:\n")
    tiskniseznam(('a', ('b', (['c1', 'c2', 'c3'], ('d', ('mezi d a e', ('e', None)))))))
    print("")

2.5.1_10.pl

0 → 100644
+33 −0
Original line number Diff line number Diff line
% nacteni:
/* ['2.5.1_10.pl']. */

:- retractall(start/0).
:- retractall(qsort/2).
:- retractall(divide/4).
:- dynamic
       qsort/2,
       divide/4.

qsort([],[]) :- !.
qsort([H],[H]) :- !.
qsort([H|T],L) :- divide(H,T,M,V),
                  qsort(M,M1), qsort(V,V1),
                  append(M1,[H|V1],L).
divide(_,[],[],[]) :- !.
divide(H,[K|T],[K|M],V) :- K=<H, !, divide(H,T,M,V).
divide(H,[K|T],M,[K|V]) :- K>H, divide(H,T,M,V).

% demonstracni vypis

  % abychom se vyhli varovanim "Redefined static procedure ..."
:- dynamic
       start/0.
       
start:- 
    write('Radici algoritmus QuickSort'),nl,nl,
    write('Vysledek volani "qsort([5, 2, 8, 2, 654, 8, 3, 4], L)":'),nl,
    qsort([5, 2, 8, 2, 654, 8, 3, 4], L), write('L = '),write(L),nl.

?-start.

:- retractall(start/0).

2.5.1_10.py

0 → 100644
+33 −0
Original line number Diff line number Diff line
#!/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 qsort(xs):
    if xs == Nil:
        return Nil
    if xs.tail == Nil:
        return xs
    ms, vs = divide(xs.head, xs.tail)
    return append(qsort(ms), Cons(xs.head, qsort(vs)))

def divide(h, xs):
    if xs == Nil:
        return (Nil, Nil)
    ms, vs = divide(h, xs.tail)
    if xs.head <= h:
        return (Cons(xs.head, ms), vs)
    else:
        return (ms, Cons(xs.head, vs))

# demonstracni vypis
if __name__ == "__main__":
    print("Radici algoritmus QuickSort\n")
    print("qsort(LinkedList(5, 2, 8, 2, 654, 8, 3, 4)): \n\t%s\n" % \
            qsort(LinkedList(5, 2, 8, 2, 654, 8, 3, 4)))