\documentclass[12pt, a4paper]{article}
 
\newcounter{conta}
\newcounter{conta2}

\hyphenation{geo-gra-fia es-pe-cia-li-za-das e-xem-plo pro-je-to
com-ple-xi-da-de de-sa-pa-re-ce a-bor-da-gem co-mo}

\begin{document}
\begin{flushleft} \Huge\bf
Simula\c c\~ao de Aut\^omatos Finitos N\~ao Determin\'{\i}sticos
\end{flushleft}

\vspace*{1cm}
\noindent {\LARGE\bf Um exemplo:}

\vspace*{10cm}
\noindent {\LARGE\bf Aut\^omato representado por 3 rela\c c\~oes:}

\begin{itemize} \Large
 \item \verb#final(E)#: \verb#E# \'e um estado final.
 \item \verb#trans(E1,S,E2)#: transi\c c\~ao de \verb#E1# para \verb#E1# sob
       \verb#S#.
 \item \verb#vazia(E1,E2)#: transi\c c\~ao de \verb#E1# para \verb#E1# sob
       $\lambda$.
\end{itemize}

\vspace*{1cm}
\noindent {\LARGE\bf Palavras:} {\Large representadas por listas.}

\vfill
\pagebreak
\noindent{\LARGE\bf Aceita\c c\~ao de palavras:}

\vspace*{.5cm}
\begin{itemize} \Large
 \item \verb#aceita(E,P)#: aceita \verb#P# partindo de \verb#E#.
\end{itemize}

\vspace*{.5cm}
\begin{enumerate} \Large
 \item[\ \ \ ] \verb#aceita(E,[]).#
 \item[\ \ \ ] \verb#aceita(E,[S|R]) :-# \\
       \hspace*{1cm}\verb#trans(E,S,E1),# \\
       \hspace*{1cm}\verb#aceita(E1,R).# 
 \item[\ \ \ ] \verb#aceita(E,P) :-# \\
       \hspace*{1cm}\verb#vazia(E,E1),# \\
       \hspace*{1cm}\verb#aceita(E1,R).#
\end{enumerate}

\vspace*{.5cm}
\noindent {\bf\LARGE Exemplos de consultas:}

\vspace*{.5cm}
\begin{enumerate} \Large
 \item[\ \ \ ] \verb#?- aceita(e1,[a,a,a,b]).# \\
       \verb#yes#
 \item[\ \ \ ] \verb#?- aceita(E,[a,b]).# \\
       \verb#E = e1;# \\
       \verb#E = e3#
 \item[\ \ \ ] \verb#?- aceita(e1,[S1,S2,S3]).# \\
 \item[\ \ \ ] \verb#?- E = [_,_,_], aceita(e1,E).#
\end{enumerate}

\vfill
\pagebreak
\begin{flushleft} \Huge\bf
O Problema das 8 Rainhas
\end{flushleft}

\vspace*{1cm}
\noindent {\LARGE\bf Predicado principal:}

\begin{itemize}\Large
 \item \verb#solution(C)# \'e verdadeiro se \verb#C# representa uma configura\c c\~ao
       das 8 rainhas em que nenhuma amea\c ca outra.
\end{itemize}

\vspace*{9cm}
\noindent {\LARGE\bf Programa 1:} {\Large configura\c c\~ao inicial \'e}
\begin{center} \Large
  \verb#[1/Y1,2/Y2,3/Y3,4/Y4,5/Y5,6/Y6,7/Y7,8/Y8]#
\end{center}

\vfill
\pagebreak
\noindent {\LARGE\bf Programa 1:}

\vspace*{14cm}
\noindent {\LARGE\bf Chamadas:}

\begin{enumerate} \Large
 \item[\ \ \ ] \verb#template(C), solution(C).# \\
       \verb#C = [1/4,2/2,3/7,4/3,5/6,6/8,7/5,8/1];# \\
       \verb#C = [1/5,2/2,3/4,4/7,5/3,6/8,7/6,8/1];# \\
       \verb#C = [1/3,2/5,3/2,4/8,5/6,6/4,7/7,8/1];# \\
       $\cdots$
\end{enumerate}

\vfill
\pagebreak
\noindent {\LARGE\bf Programa 2:}

\vspace*{1cm}
\noindent {\LARGE Configura\c c\~ao das 8 rainhas representada por:}

\begin{center} \Large
  \verb#[Y1,Y2,Y3,Y4,Y5,Y6,Y7,Y8]#
\end{center}

\vspace*{.5cm}
\noindent {\LARGE Como saber se rainha na coluna $X$ n\~ao amea\c ca
a rainha na coluna X1?}

\begin{itemize}\Large
 \item O terceiro argumento de \verb#nao_ameaca# supre $X1-X$.
\end{itemize}

\vfill
\pagebreak
\noindent {\LARGE\bf Programa 3:}

\vspace*{1cm}
\noindent {\LARGE Configura\c c\~ao das 8 rainhas representada em 4
 dimens\~oes:}

\begin{itemize} \Large
 \item colunas ($x$)
 \item linhas ($y$)
 \item diagonais nordeste ($u=x-y$)
 \item diagonais sudeste ($v=x+y$)
\end{itemize}

\vfill
\pagebreak
\noindent {\LARGE\bf Generaliza\c c\~ao do programa 3:}

\vspace*{.5cm}
\noindent {\LARGE Gerando uma lista de n\'umeros de $n_1$ a $n_2$:}

\begin{enumerate} \Large
 \item[\ \ \ ] \verb#gen(N,N,[N]).#
 \item[\ \ \ ] \verb#gen(N1,N2,[N1|R]) :-# \\
       \hspace*{1cm}\verb#N1 < N2,# \\
       \hspace*{1cm}\verb#M is N1+1,# \\
       \hspace*{1cm}\verb#gen(M,N2,R).# 
\end{enumerate}

\vspace*{.5cm}
\noindent {\LARGE\bf Rela\c c\~ao principal:} \verb#solution(N,S)#

\begin{enumerate} \Large
 \item[\ \ \ ] \verb#solution(N,S) :-# \\
       \hspace*{1cm}\verb#gen(1,N,Dxy),# \\
       \hspace*{1cm}\verb#Nu1 is 1-N, Nu2 is N-1# \\
       \hspace*{1cm}\verb#gen(Nu1,Nu2,Du),# \\
       \hspace*{1cm}\verb#Nv2 is N+N# \\
       \hspace*{1cm}\verb#gen(2,Nv2,Dv),# \\ 
       \hspace*{1cm}\verb#sol(S,Dxy,Dxy,Du,Dv).# 
\end{enumerate}

\vspace*{.5cm}
\begin{enumerate} \Large
 \item[\ \ \ ] \verb#?- solution(12,S).# \\
       \verb#S = [1,3,5,8,10,12,11,2,7,9,4]#
\end{enumerate}


\vfill
\pagebreak
\noindent {\LARGE\bf Quicksort para n\'umeros:}

\vspace*{1cm}
\begin{enumerate} \Large
 \item[\ \ \ ] \verb#quick([N|R],L) :-# \\
       \hspace*{1cm}\verb#particao(R,N,P1,P2),# \\
       \hspace*{1cm}\verb#quick(P1,Q1),# \\
       \hspace*{1cm}\verb#quick(P2,Q2),# \\
       \hspace*{1cm}\verb#conc(Q1,[N|Q2],L).# \\
       \verb#quick([],[]).#

 \item[\ \ \ ] \verb#particao([K|R],N,[K|L1],L2) :-# \\
       \hspace*{1cm}\verb#K =< N,# \\
       \hspace*{1cm}\verb#particao(R,N,L1,L2).# \\
       \verb#particao([K|R],N,L1,[K|L2]) :-# \\
       \hspace*{1cm}\verb#K > N,# \\
       \hspace*{1cm}\verb#particao(R,N,L1,L2).# \\
       \verb#particao([],N,[],[]).#
\end{enumerate}


\end{document}

