Platon Technologies
not logged in Login Registration
EnglishSlovak
open source software development celebrating 10 years of open source development! Thursday, March 28, 2024

File: [Platon] / scripts / prolog / list.prolog (download)

Revision 1.1, Mon May 2 10:55:41 2005 UTC (18 years, 11 months ago) by nepto

Several PROLOG examples added into the repository.

%
% list.prolog
%
% Developed by Ondrej Jombik <nepto@platon.sk>
% Copyright (c) 2005 Platon SDG, http://platon.sk/
% Licensed under terms of GNU General Public License.
% All rights reserved.
%
% Changelog:
% 2005-05-02 - created
%

% $Platon$

my_is_empty_list([]).

my_is_list([]).
my_is_list([_|Xs]):-my_is_list(Xs).

my_member(X,[X|_]).
my_member(X,[_|Xs]):-my_member(X,Xs).

my_first(X,[X|_]).

my_last(X,[X]).
my_last(X,[_|Xs]):-my_last(X,Xs).

my_length([], 0).
my_length([_|Xs], s(L)):-my_length(Xs, L).

% sss(A,B,C):-[A,B|C].

my_prefix([],_).
my_prefix([X|Xs], [Y|Ys]):-X=Y,my_prefix(Xs,Ys).

my_prefix2([],_).
my_prefix2([X|Xs], [X|Ys]):-my_prefix2(Xs,Ys).

% How to compare if my_prefix() is the same as my_prefix2()?

my_append([],X,X).
my_append([X|Xs],Y,[X|Zs]):-my_append(Xs,Y,Zs).

my_prefix3(X,Y):-my_append(X,_,Y).
my_suffix3(X,Y):-my_append(_,X,Y).

my_reverse([],[]).
my_reverse([X|Xs],Y):-my_reverse(Xs,Q),my_append(Q,[X],Y).

% on false causes infinite loop; why??
my_infix([],_).
my_infix(X,Y):-my_append(_,X,C),my_append(C,_,Y).

my_infix2(X,Y):-my_prefix(X,Y).
my_infix2(X,[_|Ys]):-my_infix2(X,Ys).

my_prefix_hocico([],_).
my_prefix_hocico([X|Xs],[X|Ys]):-my_prefix_hocico(Xs,Ys).
my_prefix_hocico([hocico|Xs],[_|Ys]):-my_prefix_hocico(Xs,Ys).
my_prefix_hocico([_|Xs],[hocico|Ys]):-my_prefix_hocico(Xs,Ys).
my_prefix_hocico([hocico|Xs],[hocico|Ys]):-my_prefix_hocico(Xs,Ys).

my_infix_hocico(X,Y):-my_prefix_hocico(X,Y).
my_infix_hocico(X,[_|Ys]):-my_infix_hocico(X,Ys).

my_subseq([X|Xs],[X|Ys]):-my_subseq(Xs,Ys).
my_subseq(Xs,[_|Ys]):-my_subseq(Xs,Ys).
my_subseq([],_).

my_delete([X|Xs], X, Ys):-my_delete(Xs,X,Ys).
my_delete([X|Xs], Z, [X|Ys]):-X\=Z,my_delete(Xs,Z,Ys).
my_delete([],_,[]).

% ???
my_delete_list(X,[Y|Ys],Z):-my_delete(X,Y,Q),my_delete_list(Q,Ys,Z).
my_delete_list(X,[],X).
my_delete_list([],_,[]).


Platon Group <platon@platon.org> http://platon.org/
Copyright © 2002-2006 Platon Group
Site powered by Metafox CMS
Go to Top