\documentclass[a4paper,11pt]{article}

\usepackage[margin=1in]{geometry}
\usepackage{amsmath}
\usepackage{listings}

\author{James Moreau, 1065510, jmorea03@uoguelph.ca}

\begin{document}
    
\title{CIS 3490 Assigment 3 - String Matching Algorithm}
\maketitle

\section{Instructions}
to run my programs, simply type "make", and execute the individual 
output files (no commandline arguments needed).

\section{Patterns}
Here are the patterns I will be using to analyze the efficiency of each algorithm.
\begin{enumerate}
    \item University
    \item carry
    \item gender
    \item computer
    \item name
    \item item
    \item activity
    \item campus
    \item grow
    \item mark
\end{enumerate}

\paragraph{Performance Ratio}
\begin{align*}
    Performance \: Ratio &= \frac{Number \: of \: Shifts}{Runtime}\\
\end{align*}

\section{Results}

\subsection{P21}
\begin{enumerate}
    \item 21,818.85
    \item 37,961.69
    \item 32,121.30
    \item 26,512.77
    \item 40,735.80
    \item 41,757.93
    \item 27,381.75
    \item 33,740.51
    \item 42,286.44
    \item 45,761.27
\end{enumerate}

Average is 27,405.20 shifts per millisecond

\subsection{P22}
\begin{enumerate}
    \item 28,968.8
    \item 39,987.11
    \item 35,448.55
    \item 33,556.53
    \item 38,683
    \item 40,838.17
    \item 27,952.82
    \item 37,252
    \item 44,900.3
    \item 42,877.90
\end{enumerate}

Average is 37,046.51 shifts per millisecond

\section{Conclusion}
From the analysis, we can see that the horspool algorithm which take advantage of 
a precomputed table to determine how far it can shift at each iteration performs 
significantly better than the naive method.

\end{document}