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