handouts/Warm-Ups/turing.tex
2025-01-21 17:02:42 -08:00

96 lines
2.3 KiB
TeX
Executable File

\documentclass[
solutions,
hidewarning,
singlenumbering,
nopagenumber
]{../../resources/ormc_handout}
\usepackage{../../resources/macros}
\title{Warm-Up: Turing Machine}
\uptitler{\smallurl{}}
\subtitle{Prepared by Mark on \today.}
\begin{document}
\maketitle
Consider a turing machine that understands the following instructions:
\begin{itemize}[itemsep=2mm]
\item \texttt{>}: Move the tape right
\item \texttt{<}: Move the tape left
\item \texttt{+}: Increment the value in the current cell by 1. \par
If the resulting value exceeds 255, wrap to 0.
\item \texttt{-}: Decrement the value in the current cell by 1. \par
If the resulting value is smaller than 0, wrap to 255.
\item \texttt{[}: If the the value of the current cell is 0, jump to the matching \texttt{]}. \par
Otherwise, jump to the next instruction.
\item \texttt{]}: If the value of the current cell is 0, jump to the next instruction. \par
Otherwise, jump back to the matching \texttt{[}.
\end{itemize}
For example, the program \texttt{+>++>+++>++++>-} will set the first five cells to $[1, 2, 3, 4, 255]$. \par
All other cells will be zero, since they were not modified.
\problem{}
What does the snippet \texttt{[-]} do? \par
Is this different from \texttt{[+]}?
\vfill
\problem{}
What does \texttt{[->+<]} do?
\begin{solution}
Move the value of this cell into the next cell
\end{solution}
\vfill
\problem{}
Write a program that adds the value of the current cell to the next cell. \par
You do not need to preserve the value of the current cell.
\vfill
\pagebreak
\problem{}
What does \texttt{[>]} do?
\begin{solution}
Finds the first zero cell to the right
\end{solution}
\vfill
\problem{}
Write a program that copies the value of the current cell into the next cell,
preserving its initial value. \par
\hint{You may use as many "scratch" cells as you want.}
\vfill
\problem{}
Write a program that computes the product of the current cell and the next cell.
\vfill
\problem{Bonus}
Write a program that computes the square of the current cell. \par
(If your program starts at a cell with value \texttt{7}, it should end at a cell with value \texttt{49}.)
\vfill
\problem{Bonus}
What does \texttt{+[>[<-]<[->+<]>]>} do?
\begin{solution}
Finds the first non-zero cell to the right
\end{solution}
\end{document}