feat: added tutorial file

This commit is contained in:
2025-11-13 21:07:05 -03:00
parent 5780196823
commit e8f7b22267
10 changed files with 138 additions and 2 deletions

Binary file not shown.

View File

@@ -0,0 +1,38 @@
\documentclass[10pt]{article}
\usepackage[utf8]{inputenc}
\usepackage{amsmath,amsthm,amssymb}
\usepackage{fullpage}
\usepackage{url}
\pagenumbering{gobble}
\usepackage{hyperref}
\title{ Tutorial: Movimento do Cavalo}
\author{Spoj NAKANJ - Minimum Knight moves}
\date{}
\begin{document}
\maketitle
Para resolver o problema de encontrar o número mínimo de movimentos que um cavalo precisa para ir de uma posição inicial a uma posição de destino em um tabuleiro de xadrez $8 \times 8$, podemos modelar o tabuleiro como um grafo.
\subsection*{Observações importantes}
\begin{itemize}
\item Cada casa do tabuleiro representa um vértice do grafo.
\item Cada movimento válido do cavalo corresponde a uma aresta entre dois vértices.
\item O objetivo é encontrar o menor número de arestas que conectam a posição inicial à posição de destino.
\end{itemize}
\subsection*{Estratégia de solução}
O problema de encontrar o menor caminho em um grafo sem pesos nas arestas pode ser resolvido eficientemente usando \textbf{Busca em Largura (BFS, \textit{Breadth-First Search})}.
\begin{enumerate}
\item Inicialize uma fila com a posição inicial do cavalo.
\item Mantenha uma matriz de visitados para marcar as posições já exploradas.
\item Para cada posição na fila, tente todos os oito movimentos possíveis do cavalo:
\begin{itemize}
\item $(+2, +1)$, $(+2, -1)$, $(-2, +1)$, $(-2, -1)$
\item $(+1, +2)$, $(+1, -2)$, $(-1, +2)$, $(-1, -2)$
\end{itemize}
\item Se a nova posição estiver dentro do tabuleiro e ainda não tiver sido visitada, marque-a como visitada e adicione-a à fila.
\item Continue até alcançar a posição de destino.
\end{enumerate}\end{document}

Binary file not shown.

View File

@@ -21,7 +21,7 @@ Sua tarefa é ajudar Anjali a determinar o número mínimo de movimentos necess
\Entrada
A primeira linha contém um inteiro $T$ ($1 \leq T \leq 100$), o número de casos de teste.
Cada uma das próximas $T$ linhas contém duas strings \texttt{inicio} e \texttt{destino} separadas por um espaço.
Cada uma das próximas $T$ linhas contém duas strings, \texttt{inicio} e \texttt{destino}, separadas por um espaço.
Cada string representa uma casa válida do tabuleiro:
o primeiro caractere é uma letra de `a' a `h', e o segundo é um dígito de `1' a `8'.

View File

@@ -1,5 +1,5 @@
A primeira linha contém um inteiro $T$ ($1 \leq T \leq 100$), o número de casos de teste.
Cada uma das próximas $T$ linhas contém duas strings \texttt{inicio} e \texttt{destino} separadas por um espaço.
Cada uma das próximas $T$ linhas contém duas strings, \texttt{inicio} e \texttt{destino}, separadas por um espaço.
Cada string representa uma casa válida do tabuleiro:
o primeiro caractere é uma letra de `a' a `h', e o segundo é um dígito de `1' a `8'.

View File

@@ -0,0 +1,25 @@
Para resolver o problema de encontrar o número mínimo de movimentos que um cavalo precisa para ir de uma posição inicial a uma posição de destino em um tabuleiro de xadrez $8 \times 8$, podemos modelar o tabuleiro como um grafo.
\subsection*{Observações importantes}
\begin{itemize}
\item Cada casa do tabuleiro representa um vértice do grafo.
\item Cada movimento válido do cavalo corresponde a uma aresta entre dois vértices.
\item O objetivo é encontrar o menor número de arestas que conectam a posição inicial à posição de destino.
\end{itemize}
\subsection*{Estratégia de solução}
O problema de encontrar o menor caminho em um grafo sem pesos nas arestas pode ser resolvido eficientemente usando \textbf{Busca em Largura (BFS, \textit{Breadth-First Search})}.
\begin{enumerate}
\item Inicialize uma fila com a posição inicial do cavalo.
\item Mantenha uma matriz de visitados para marcar as posições já exploradas.
\item Para cada posição na fila, tente todos os oito movimentos possíveis do cavalo:
\begin{itemize}
\item $(+2, +1)$, $(+2, -1)$, $(-2, +1)$, $(-2, -1)$
\item $(+1, +2)$, $(+1, -2)$, $(-1, +2)$, $(-1, -2)$
\end{itemize}
\item Se a nova posição estiver dentro do tabuleiro e ainda não tiver sido visitada, marque-a como visitada e adicione-a à fila.
\item Continue até alcançar a posição de destino.
\end{enumerate}