Toggle navigation
?
users online
Logout
Open hangout
Open chat for current file
% Student exercise profile :- set_prolog_flag(occurs_check, error). % disallow cyclic terms :- set_prolog_stack(global, limit(8 000 000)). % limit term space (8Mb) :- set_prolog_stack(local, limit(2 000 000)). % limit environment space % Your program goes here :- use_module(library(dcg/basics)). % S --> e | non_letters, Word, non_letters, S. % Word --> letter Word | e s([H|Rest]) --> non_letters, word(H), non_letters, s(Rest). s([]) --> []. non_letters --> non_letter, non_letters. non_letters --> []. non_letter --> [C], {\+ code_type(C, alpha)}. word([L|Rest]) --> letter(L), word(Rest). word([]) --> []. letter(C) --> [C], {code_type(C, alpha)}. word_acc(Word) --> letter(L), word_rest([L], Word). word_rest(Acc, Word) --> letter(L), word_rest([L|Acc], Word). word_rest(Acc, Out) --> [], {reverse(Acc, Out)}. %%%%%%%%%%%%% print_(Out) :- nested_list(Out), !, print_list(Out). print_(Out) :- \+ nested_list(Out), !, format('~s~n', [Out]). print_list([]). print_list([H|Rest]) :- print_(H), print_list(Rest). nested_list([H|_]) :- is_list(H).