All pastes #266556 Raw Edit

Something

public text v1 · immutable
·published 2006-12-04 06:44 UTC
rendered paste body




%   Prolog Skeleton for assign3 

%   compile with 

%   gplc --no-top-level MainA.pl

%   produces executable assign3



%

% The following is a required directive when compiling. You

% may comment it out when using the interpreter though.

%

:- initialization(main).





%

% Our main predicate. You should extend this as needed.

% Right now it just reads input from stdin and breaks it 

% into a list of lines from the file.

%

main :- getContents(Contents),

	split(Contents,List),

        writelist(List).





%

% The predicates below are useful for input and output.

%



/* Display a List of atoms on a line */

writelist([]):- nl.

writelist([First|Rest]) :- write(First), writelist(Rest).



/* Character based getContents */

getContents(Contents):- get_char(Char), getRest(Char,Contents).

getRest(end_of_file,[]) :- !.

getRest(Char,[Char|Rest]):- get_char(Next), getRest(Next,Rest).



/* Split */

split(String,List) :- split(String,[],List).

/* The actual work that split does, is here in split/3 */ 

split([],[],[]).

split([],Line,[Line]).

split(['\n'|Tail],[],Lines) :- split(Tail,[],Lines).

split(['\n'|Tail],Line,[Line|Lines]):- split(Tail,[],Lines).

split([Head|Tail],Line,Lines) :- append(Line,[Head],NewLine), split(Tail,NewLine,Lines).