RosettaCodeData/Task/Odd-word-problem/Prolog/odd-word-problem.pro

28 lines
412 B
Prolog

odd_word_problem :-
read_line_to_codes(user_input, L),
even_word(L, Out, []),
string_to_list(Str, Out),
writeln(Str).
even_word(".") --> ".".
even_word([H | T]) -->
{char_type(H,alnum)},
[H],
even_word(T).
even_word([H | T]) -->
[H],
odd_word(T, []).
odd_word(".", R) --> R, ".".
odd_word([H|T], R) -->
{char_type(H,alnum)},
odd_word(T, [H | R]).
odd_word([H|T], R) -->
R,
[H],
even_word(T).