%%% questão 1

palavras(N) :-
    get_char(X),
    trata(X, N).

trata('\n', 0) :- !.
trata(' ', N) :-
    !,
    palavras(N).
trata(_, N) :-
    delimitador(X),
    trata(X, N1),
    N is N1 + 1.

delimitador(X) :-
    get_char(X1),
    trata1(X1, X).

trata1('\n', '\n') :- !.
trata1(' ', ' ') :- !.
trata1(_, N) :-
    delimitador(N).

%%% questão 2

numero(L) :- numero(L, []).

numero --> inteiro.
numero --> inteiro, ['.'].
numero --> inteiro, ['.'], inteiro.

inteiro --> digito.
inteiro --> digito, inteiro.

digito --> ['0'].
digito --> ['1'].

%%% questão 3

passos(1, 0).
passos(N, P) :-
    N > 1,
    f(N, N1),
    passos(N1, P1),
    P is P1 + 1.

f(N, F) :-
    1 =:= N mod 2,
    F is 3*N + 1.
f(N, F) :-
    0 =:= N mod 2,
    F is N // 2.

%%% questão 4

series([], _, []).
series([serie(Nome, Ai, Af)|L], A, [Nome|S]) :-
    Ai =< A,
    A =< Af,
    !,
    series(L, A, S).
series([_|L], A, S) :-
    series(L, A, S).

%%% para testar questão 4

series([serie(house_of_cards, 2013, 2016),
	serie(law_and_order, 1990, 2010),
	serie(breaking_bad, 2008, 2013),
	serie(walking_dead, 2010, 2016),
	serie(game_of_thrones, 2011, 2016),
	serie(dexter, 2006, 2013)
	    ]).
