Added turing machine warm-up
This commit is contained in:
parent
0ab8dc3734
commit
449bd2e24e
96
Misc/Warm-Ups/turing.tex
Executable file
96
Misc/Warm-Ups/turing.tex
Executable file
@ -0,0 +1,96 @@
|
||||
\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}
|
Loading…
x
Reference in New Issue
Block a user