Warm-ups
This commit is contained in:
parent
80eef6b7dc
commit
540e34d9bd
35
src/Warm-Ups/A Familiar Concept/main.tex
Executable file
35
src/Warm-Ups/A Familiar Concept/main.tex
Executable file
@ -0,0 +1,35 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
hidewarning,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\title{Warm-Up: A Familiar Concept}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
|
||||||
|
\problem{}<one>
|
||||||
|
Let $v = [-5, -2, 0, 1, 4, 1000]$. Find all $x$ that minimize the following metric. \par
|
||||||
|
$$
|
||||||
|
\sum_{\forall i} |v_i - x| = |v_1 - x| + |v_2 - x| + ... + |v_6 - x|
|
||||||
|
$$
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Let $v = [-5, -2, 0, 1, 4, 1000, 1001]$. Find all $x$ that minimize the metric in \ref{one}.
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
What is this metric usually called?
|
||||||
|
|
||||||
|
\end{document}
|
6
src/Warm-Ups/A Familiar Concept/meta.toml
Normal file
6
src/Warm-Ups/A Familiar Concept/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "A Familiar Concept"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = false
|
93
src/Warm-Ups/Adders/main.tex
Executable file
93
src/Warm-Ups/Adders/main.tex
Executable file
@ -0,0 +1,93 @@
|
|||||||
|
\documentclass[
|
||||||
|
nosolutions,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
|
||||||
|
\title{Warm-Up: Adders}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Fill the following binary addition table. \par
|
||||||
|
\hint{s is \say{sum,} c is \say{carry}}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{tabular}{ c c || c c }
|
||||||
|
$a$ & $b$ & s & c \\
|
||||||
|
\hline
|
||||||
|
0 & 0 & ? & ? \\
|
||||||
|
0 & 1 & ? & ? \\
|
||||||
|
1 & 0 & ? & ? \\
|
||||||
|
1 & 1 & ? & ?
|
||||||
|
\end{tabular}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Draw a logic circuit that atisfies the above table. \par
|
||||||
|
This is called a \textit{half adder}. \par
|
||||||
|
\hint{You should need exactly two gates.}
|
||||||
|
|
||||||
|
\begin{solution}
|
||||||
|
$s = a \texttt{ xor } b$ \par
|
||||||
|
$c = a \texttt{ and } b$
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\definition{}
|
||||||
|
A \textit{full adder} is similar to a half adder, but it has an extra input: \par
|
||||||
|
a full adder takes $a$, $b$, and $c_\text{in}$, and produces $s$ and $c_\text{out}$. \par
|
||||||
|
\hint{$c_\text{in}$ is \say{carry in}}
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Use two half adders to construct a full adder.
|
||||||
|
|
||||||
|
\begin{solution}
|
||||||
|
$s_1, c_1 = \texttt{HA}(a, b)$ \par
|
||||||
|
$s_2, c_2 = \texttt{HA}(s_1, c_\text{in})$ \par
|
||||||
|
$s_\text{out} = s_2$ \par
|
||||||
|
$c_\text{out} = \texttt{OR}(c_1, c_2)$
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
Of course, the class should just draw the circuit.
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
|
\problem{}<rippleadder>
|
||||||
|
How can we add two four-bit binary numbers using the full adder? \par
|
||||||
|
We want a four-bit output sum and a one-bit $c_\text{out}$.
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Say that all basic logic gates need $1u$ of time to fully switch states. \par
|
||||||
|
\note[Note]{This is called \textit{gate delay}}
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
How much time does a full adder need to fully switch states? \par
|
||||||
|
How about your circuit from \ref{rippleadder}?
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{Bonus}
|
||||||
|
Design a faster solution to \ref{rippleadder}.
|
||||||
|
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Adders/meta.toml
Normal file
6
src/Warm-Ups/Adders/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "Adders"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = true
|
187
src/Warm-Ups/Big-Tac-Toe/main.tex
Executable file
187
src/Warm-Ups/Big-Tac-Toe/main.tex
Executable file
@ -0,0 +1,187 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
hidewarning,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
% x,y,scale,style
|
||||||
|
\def\ttt#1#2#3#4{
|
||||||
|
\draw[#4] (#1, #2+#3) -- (#1+#3+#3+#3, #2+#3);
|
||||||
|
\draw[#4] (#1, #2+#3+#3) -- (#1+#3+#3+#3, #2+#3+#3);
|
||||||
|
\draw[#4] (#1+#3, #2) -- (#1+#3, #2+#3+#3+#3);
|
||||||
|
\draw[#4] (#1+#3+#3, #2) -- (#1+#3+#3, #2+#3+#3+#3);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
\geometry{
|
||||||
|
paper = letterpaper,
|
||||||
|
top = 25mm,
|
||||||
|
bottom = 30mm,
|
||||||
|
left = 20mm,
|
||||||
|
right = 20mm,
|
||||||
|
headheight = 75mm,
|
||||||
|
footskip = 15mm
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
% misere ttt
|
||||||
|
|
||||||
|
% Numerical Tic Tac Toe is a variation invented by the mathematician Ronald Graham.
|
||||||
|
% The numbers 1 to 9 are used in this game. The first player plays with the odd numbers,
|
||||||
|
% the second player plays with the even numbers. All numbers can be used only once.
|
||||||
|
% The player who puts down 15 points in a line wins (sum of 3 numbers).
|
||||||
|
% This game can be generalized to a n × n board.
|
||||||
|
|
||||||
|
|
||||||
|
% In Treblecross, both players play with the same symbol.
|
||||||
|
% The game is played on a 1-by-n board with k equal to 3.
|
||||||
|
% The player who makes a three in a row of Xs (or black chips) wins the game
|
||||||
|
|
||||||
|
\title{Warm-Up: Big-Tac-Toe}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today.}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
We have large tic-tac-toe grid, each cell of which contains another.
|
||||||
|
On each turn, one player puts their glyph into a cell of a small grid. When the next player goes,
|
||||||
|
they must make their move in the small grid in the same position as the previous player's move.
|
||||||
|
\begin{itemize}
|
||||||
|
\item The first player to move may pick any small grid to start in.
|
||||||
|
\item If a player is directed to a grid that is \textit{full}, that player may go anywhere. \par
|
||||||
|
A sub-grid that is \say{won} but not full may still be played in.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
The first player to complete a line of three \say{won} subgrids wins the game.
|
||||||
|
|
||||||
|
\vfill\null\hfill
|
||||||
|
\begin{minipage}{0.48\textwidth}
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}[scale=0.65]
|
||||||
|
\ttt{0}{0}{4}{line width=0.5mm}
|
||||||
|
\ttt{0.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{0.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{0.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
\end{minipage}
|
||||||
|
\hfill
|
||||||
|
\begin{minipage}{0.48\textwidth}
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}[scale=0.65]
|
||||||
|
\ttt{0}{0}{4}{line width=0.5mm}
|
||||||
|
\ttt{0.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{0.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{0.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
\end{minipage}
|
||||||
|
\hfill\null\vfill
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Play a few rounds of this game with someone nearby. \par
|
||||||
|
Can either player force a win?
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Modify the rules of this game to disallow play in won subgrids. \par
|
||||||
|
How does your strategy change?
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
|
|
||||||
|
\null\vfill\null\hfill
|
||||||
|
\begin{minipage}{0.48\textwidth}
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}[scale=0.65]
|
||||||
|
\ttt{0}{0}{4}{line width=0.5mm}
|
||||||
|
\ttt{0.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{0.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{0.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
\end{minipage}
|
||||||
|
\hfill
|
||||||
|
\begin{minipage}{0.48\textwidth}
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}[scale=0.65]
|
||||||
|
\ttt{0}{0}{4}{line width=0.5mm}
|
||||||
|
\ttt{0.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{0.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{0.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
\end{minipage}
|
||||||
|
\hfill\null\vfill
|
||||||
|
|
||||||
|
\vfill\null\hfill
|
||||||
|
\begin{minipage}{0.48\textwidth}
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}[scale=0.65]
|
||||||
|
\ttt{0}{0}{4}{line width=0.5mm}
|
||||||
|
\ttt{0.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{0.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{0.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
\end{minipage}
|
||||||
|
\hfill
|
||||||
|
\begin{minipage}{0.48\textwidth}
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}[scale=0.65]
|
||||||
|
\ttt{0}{0}{4}{line width=0.5mm}
|
||||||
|
\ttt{0.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{0.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{0.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{4.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{0.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{4.5}{1}{line width=0.25mm}
|
||||||
|
\ttt{8.5}{8.5}{1}{line width=0.25mm}
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
\end{minipage}
|
||||||
|
\hfill\null\vfill
|
||||||
|
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Big-Tac-Toe/meta.toml
Normal file
6
src/Warm-Ups/Big-Tac-Toe/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "Big-Tac-Toe"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = false
|
177
src/Warm-Ups/Flip-Flops/main.tex
Executable file
177
src/Warm-Ups/Flip-Flops/main.tex
Executable file
@ -0,0 +1,177 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
shortwarning,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
\geometry{top = 20mm}
|
||||||
|
|
||||||
|
|
||||||
|
\usepackage{tikz}
|
||||||
|
\usetikzlibrary{circuits.logic.US}
|
||||||
|
\usetikzlibrary{plotmarks}
|
||||||
|
|
||||||
|
|
||||||
|
\title{Warm-Up: Flip-Flops}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today.}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Below is a circuit of logic gates. S and R are input pins, Q is an output pin. \par
|
||||||
|
What does it do?
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}[circuit logic US, scale=2]
|
||||||
|
% tikz notes:
|
||||||
|
% -|: Select vertical of first and horizontal of second
|
||||||
|
|
||||||
|
% Gates
|
||||||
|
\node[or gate] (or) at (0,0) {\tiny\texttt{or}};
|
||||||
|
\node[not gate] (not) at (0,-0.8) {\tiny\texttt{not}};
|
||||||
|
\node[and gate] (and) at (1.4,-0.4) {\tiny\texttt{and}};
|
||||||
|
|
||||||
|
% Important locations
|
||||||
|
\draw (or.input 1) ++(-0.5, 0) coordinate (start);
|
||||||
|
\draw (or.input 1) ++(-0.25, 0) coordinate (startjoin);
|
||||||
|
\draw (and.output) ++(0.25, 0) coordinate (endjoin);
|
||||||
|
\draw (and.output) ++(0.75, 0) coordinate (end);
|
||||||
|
|
||||||
|
% Connections
|
||||||
|
\draw (or.input 2) -- (or.input 2 -| start) node[anchor=east] {S};
|
||||||
|
\draw (not.input) -- (not.input -| start) node[anchor=east] {R};
|
||||||
|
\draw (or.output) -| (or.output -| 0.75,0) |- (and.input 1);
|
||||||
|
\draw (not.output) -| (not.output -| 0.75,0) |- (and.input 2);
|
||||||
|
\draw (and.output) -- (and.output -| endjoin) -- ++(0,0.9) -| (startjoin) -- (or.input 1);
|
||||||
|
\filldraw (and.output -| endjoin) circle[radius=0.3mm];
|
||||||
|
\draw (endjoin) -- (end) node[anchor=west] {Q};
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{solution}
|
||||||
|
This is an S-R (\say{set-reset}) latch. \par
|
||||||
|
Set S to high, and Q will stay high until it is reset by R.
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Below is another circuit. How does it work? \par
|
||||||
|
\hint{\texttt{nor} = not or. It works exactly as you'd expect.}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}[circuit logic US, scale=2]
|
||||||
|
|
||||||
|
% Gates
|
||||||
|
\node[nor gate] (nora) at (0,0) {\tiny\texttt{nor}};
|
||||||
|
\node[nor gate] (norb) at (0,-1.2) {\tiny\texttt{nor}};
|
||||||
|
|
||||||
|
% Important locations
|
||||||
|
\draw (nora.input 1) ++(-0.5, 0) coordinate (start);
|
||||||
|
\draw (nora.input 1) ++(-0.25, 0) coordinate (startjoin);
|
||||||
|
\draw (nora.output) ++(0.25, 0) coordinate (endjoin);
|
||||||
|
\draw (nora.output) ++(0.75, 0) coordinate (end);
|
||||||
|
|
||||||
|
% Connections
|
||||||
|
% Input extension
|
||||||
|
\draw (nora.input 1) -- (nora.input 1 -| start) node[anchor=east] {S};
|
||||||
|
%\draw (nora.input 2 -| start) -- (nora.input 2);
|
||||||
|
%\draw (norb.input 1 -| start) -- (norb.input 1);
|
||||||
|
\draw (norb.input 2) -- (norb.input 2 -| start) node[anchor=east] {R};
|
||||||
|
% Output extension
|
||||||
|
\draw (norb.output) -- (norb.output -| end) node[anchor=west] {Q};
|
||||||
|
%\draw (norb.output) -- ++(1, 0) node[anchor=west] {$\overline{\text{Q}}$};
|
||||||
|
% Cross-connection
|
||||||
|
\draw (nora.output -| endjoin) -- (endjoin |- 0,-0.4) -- (startjoin |- 0,-0.8) -- (norb.input 1 -| startjoin) -- (norb.input 1);
|
||||||
|
\draw (norb.output -| endjoin) -- (endjoin |- 0,-0.8) -- (startjoin |- 0,-0.4) -- (nora.input 2 -| startjoin) -- (nora.input 2);
|
||||||
|
\draw (norb.output) -- (norb.output -| endjoin);
|
||||||
|
\filldraw (norb.output -| endjoin) circle[radius=0.3mm];
|
||||||
|
\draw (nora.output) -- (nora.output -| endjoin);
|
||||||
|
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\begin{solution}
|
||||||
|
This is another S-R (\say{set-reset}) latch.
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Empty circles represent inverted inputs/outputs.
|
||||||
|
This is the reason a \texttt{nand} gate looks like an \texttt{and} gate with a dot.
|
||||||
|
Pay careful attention to the nand gate in the bottom-left.
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
What does this circuit do?
|
||||||
|
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}[circuit logic US, scale=2]
|
||||||
|
|
||||||
|
|
||||||
|
% Gates
|
||||||
|
\node[nand gate] (nandc) at (1.4,0) {\tiny\texttt{nand}};
|
||||||
|
\node[nand gate] (nandd) at (1.4,-1.2) {\tiny\texttt{nand}};
|
||||||
|
% inputs=in => 1 is inverted, 2 is normal
|
||||||
|
\node[nand gate] (nanda) at (nandc.input 1 -| 0,0) {\tiny\texttt{nand}};
|
||||||
|
\node[nand gate,inputs=in] (nandb) at (nandd.input 2 -| 0,-1.2) {\tiny\texttt{nand}};
|
||||||
|
|
||||||
|
% Important locations
|
||||||
|
\draw (nanda.input 1) ++(-1, 0) coordinate (start);
|
||||||
|
\draw (nanda.input 1) ++(-0.5, 0) coordinate (startjoina);
|
||||||
|
\draw (nanda.input 1) ++(-0.25, 0) coordinate (startjoinb);
|
||||||
|
\draw (nandc.input 1) ++(-0.5, 0) coordinate (midstart);
|
||||||
|
\draw (nandc.input 1) ++(-0.25, 0) coordinate (midstartjoin);
|
||||||
|
\draw (nandc.output) ++(0.25, 0) coordinate (endjoin);
|
||||||
|
\draw (nandc.output) ++(0.75, 0) coordinate (end);
|
||||||
|
|
||||||
|
% Connections
|
||||||
|
\draw (nanda.input 1) -- (nanda.input 1 -| start) node[anchor=east] {D};
|
||||||
|
\draw (nandb.input 2) -- (nandb.input 2 -| start) node[anchor=east] {C};
|
||||||
|
\draw (nanda.input 1 -| startjoinb) |- (nandb.input 1);
|
||||||
|
\draw (nandb.input 2 -| startjoina) |- (nanda.input 2);
|
||||||
|
\filldraw (nanda.input 1 -| startjoinb) circle[radius=0.3mm];
|
||||||
|
\filldraw (nandb.input 2 -| startjoina) circle[radius=0.3mm];
|
||||||
|
\draw (nanda.output) -- (nandc.input 1);
|
||||||
|
\draw (nandb.output) -- (nandd.input 2);
|
||||||
|
\draw (nandc.output) -- (nandc.output -| end) node[anchor=west] {Q};
|
||||||
|
\draw (nandc.output -| endjoin) -- (endjoin |- 0,-0.4) -- (midstartjoin |- 0,-0.8) -- (nandd.input 1 -| midstartjoin) -- (nandd.input 1);
|
||||||
|
\draw (nandd.output -| endjoin) -- (endjoin |- 0,-0.8) -- (midstartjoin |- 0,-0.4) -- (nandc.input 2 -| midstartjoin) -- (nandc.input 2);
|
||||||
|
\draw (nandd.output) -- (nandd.output -| endjoin);
|
||||||
|
\draw (nandc.output) -- (nandc.output -| endjoin) circle[radius=0.3mm];
|
||||||
|
\filldraw (nandc.output -| endjoin) circle[radius=0.3mm];
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{solution}
|
||||||
|
This is a D (\say{data}) flip-flop. \par
|
||||||
|
D is a \say{data} pin. When C is high, this circuit sets Q to D. \par
|
||||||
|
When C is low, Q stays at its previous value until D is set to high again.
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
In other words, this circuit \say{reads} D whenever C is high.
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
|
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Flip-Flops/meta.toml
Normal file
6
src/Warm-Ups/Flip-Flops/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "Flip-Flops"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = true
|
31
src/Warm-Ups/Fuse Timers/main.tex
Executable file
31
src/Warm-Ups/Fuse Timers/main.tex
Executable file
@ -0,0 +1,31 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
hidewarning,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\title{Warm-Up: Fuse Timers}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today.}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Suppose we have two strings and a lighter. Each string takes an hour to fully burn. \par
|
||||||
|
However, we do not know how fast each part of the string burns:
|
||||||
|
half might burn in 1 minute, and the rest could take 59.
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
How would we measure exactly 45 minutes using these strings?
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Fuse Timers/meta.toml
Normal file
6
src/Warm-Ups/Fuse Timers/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "Fuse Timers"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = false
|
121
src/Warm-Ups/Gallery/main.tex
Executable file
121
src/Warm-Ups/Gallery/main.tex
Executable file
@ -0,0 +1,121 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
|
||||||
|
\makeatletter
|
||||||
|
\newcommand{\thisone}{
|
||||||
|
\if@solutions
|
||||||
|
{\color{red} $\Leftarrow$ \texttt{this one}}
|
||||||
|
\else\fi
|
||||||
|
}
|
||||||
|
|
||||||
|
\title{Warm-Up: The Gallery}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
A museum curator is arranging seven photographs on a gallery wall in accordance with the photographer's requirements.
|
||||||
|
They are titled as follows: Fence, Gardenias, Hibiscus, Irises, Katydid, Lotus, and Magnolia.
|
||||||
|
|
||||||
|
The photograph's requirements are as follows:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Gardenias must be immediately before Katydid.
|
||||||
|
\item Hibiscus must be somewhere before Katydid but cannot be the first photograph.
|
||||||
|
\item Irises and Lotus must be next to one another.
|
||||||
|
\item Magnolia must be one of the first three photographs.
|
||||||
|
\item Fence must be either first or seventh.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Which of the below could be a valid ordering? \par
|
||||||
|
\note[Note]{We denote each painting by the first letter of its title.}
|
||||||
|
\begin{itemize}
|
||||||
|
\item \texttt{FHGMKIL}
|
||||||
|
\item \texttt{HMGKILF}
|
||||||
|
\item \texttt{ILMHGKF} \thisone{}
|
||||||
|
\item \texttt{LMIHGKF}
|
||||||
|
\item \texttt{MFHGKLI}
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
If Irises is immediately before Gardenias, which of the following could be true?
|
||||||
|
\begin{itemize}
|
||||||
|
\item Gardenias is fourth
|
||||||
|
\item Hibiscus is fourth
|
||||||
|
\item Irises is third
|
||||||
|
\item Lotus is second
|
||||||
|
\item Magnolia is third \thisone{}
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
The ordering of the photographs is fully determined if...
|
||||||
|
\begin{itemize}
|
||||||
|
\item Gardenias is fourth
|
||||||
|
\item Hibiscus is second
|
||||||
|
\item Irises is second
|
||||||
|
\item Lotus is first \thisone{}
|
||||||
|
\item Magnolia is third
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
If Magnolia is second, what CANNOT be true?
|
||||||
|
\begin{itemize}
|
||||||
|
\item Hibiscus is third
|
||||||
|
\item Hibiscus is fourth \thisone{}
|
||||||
|
\item Hibiscus is fifth
|
||||||
|
\item Gardenias is fourth
|
||||||
|
\item Gardenias is sixth
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Katydid cannot be in which position?
|
||||||
|
\begin{itemize}
|
||||||
|
\item Third \thisone{}
|
||||||
|
\item Fourth
|
||||||
|
\item Fifth
|
||||||
|
\item Sixth
|
||||||
|
\item Seventh
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
If Gardenias is fourth, what must be true?
|
||||||
|
\begin{itemize}
|
||||||
|
\item Fence is first \thisone{}
|
||||||
|
\item Hibiscus is third
|
||||||
|
\item Irises is seventh
|
||||||
|
\item Magnolia is first
|
||||||
|
\item Magnolia is second
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Which one of the following,
|
||||||
|
if substituted for the second condition,
|
||||||
|
would have the same effect in determining the
|
||||||
|
arrangement of the photographs?
|
||||||
|
|
||||||
|
\begin{itemize}
|
||||||
|
\item If Fence is seventh, Hibiscus is second
|
||||||
|
\item Gardenias is somewhere after Hibiscus, and either Fence or Magnolia is first
|
||||||
|
\item Hibiscus must be somewhere between the first and sixth photographs
|
||||||
|
\item Unless Hibiscus is second, it must be somewhere between Magnolia and Gardenias \thisone{}
|
||||||
|
\item Katydid is somewhere after Hibiscus, which must be after Fence.
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\pagebreak
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Gallery/meta.toml
Normal file
6
src/Warm-Ups/Gallery/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "The Gallery"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = true
|
170
src/Warm-Ups/Ivan the Electrician/main.tex
Executable file
170
src/Warm-Ups/Ivan the Electrician/main.tex
Executable file
@ -0,0 +1,170 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
hidewarning,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
% We put nodes in a separate layer, so we can
|
||||||
|
% slightly overlap with paths for a perfect fit
|
||||||
|
\pgfdeclarelayer{nodes}
|
||||||
|
\pgfsetlayers{main,nodes}
|
||||||
|
|
||||||
|
% Layer settings
|
||||||
|
\tikzset{
|
||||||
|
% Layer hack, lets us write
|
||||||
|
% later = * in scopes.
|
||||||
|
layer/.style = {
|
||||||
|
execute at begin scope={\pgfonlayer{#1}},
|
||||||
|
execute at end scope={\endpgfonlayer}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
\title{The Electrician's Warm-Up}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
|
||||||
|
Ivan the electician is working in an apartment. He has a box of switches, which come in three types:
|
||||||
|
\begin{center}
|
||||||
|
\begin{minipage}[t]{0.3\textwidth}
|
||||||
|
\begin{center}
|
||||||
|
Plain switch
|
||||||
|
\end{center}
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}
|
||||||
|
% A state
|
||||||
|
\node at (0.375, -1.25) {A};
|
||||||
|
\draw[line width=1mm] (0, 0) -- (0.75, 0);
|
||||||
|
|
||||||
|
\draw[fill=white] (0, 0) circle (1mm);
|
||||||
|
\draw[fill=white] (0.75, 0) circle (1mm);
|
||||||
|
|
||||||
|
% B state
|
||||||
|
\node at (2.375, -1.25) {B};
|
||||||
|
\draw[line width=1mm,cap=round] (2, 0) -- (2.6, 0.4);
|
||||||
|
|
||||||
|
\draw[fill=white] (2, 0) circle (1mm);
|
||||||
|
\draw[fill=white] (2.75, 0) circle (1mm);
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
\end{minipage}
|
||||||
|
\begin{minipage}[t]{0.3\textwidth}
|
||||||
|
\begin{center}
|
||||||
|
Three-way switch
|
||||||
|
\end{center}
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}
|
||||||
|
% A state
|
||||||
|
\node at (0.375, -1) {A};
|
||||||
|
\draw[line width=1mm] (0, 0) -- (0.75, 0.5);
|
||||||
|
|
||||||
|
\draw[fill=white] (0, 0) circle (1mm);
|
||||||
|
\draw[fill=white] (0.75, 0.5) circle (1mm);
|
||||||
|
\draw[fill=white] (0.75, -0.5) circle (1mm);
|
||||||
|
|
||||||
|
% B state
|
||||||
|
\node at (2.375, -1) {B};
|
||||||
|
\draw[line width=1mm] (2, 0) -- (2.75, -0.5);
|
||||||
|
|
||||||
|
\draw[fill=white] (2, 0) circle (1mm);
|
||||||
|
\draw[fill=white] (2.75, 0.5) circle (1mm);
|
||||||
|
\draw[fill=white] (2.75, -0.5) circle (1mm);
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
\end{minipage}
|
||||||
|
\hfill
|
||||||
|
\begin{minipage}[t]{0.3\textwidth}
|
||||||
|
\begin{center}
|
||||||
|
Four-way switch
|
||||||
|
\end{center}
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}
|
||||||
|
% A state
|
||||||
|
\node at (0.375, -0.5) {A};
|
||||||
|
\draw[line width=1mm] (0, 0) -- (0.75, 1);
|
||||||
|
\draw[line width=1mm] (0, 1) -- (0.75, 0);
|
||||||
|
|
||||||
|
\draw[fill=white] (0, 0) circle (1mm);
|
||||||
|
\draw[fill=white] (0.75, 0) circle (1mm);
|
||||||
|
\draw[fill=white] (0, 1) circle (1mm);
|
||||||
|
\draw[fill=white] (0.75, 1) circle (1mm);
|
||||||
|
|
||||||
|
% B state
|
||||||
|
\node at (2.375, -0.5) {B};
|
||||||
|
\draw[line width=1mm] (2, 0) -- (2.75, 0);
|
||||||
|
\draw[line width=1mm] (2, 1) -- (2.75, 1);
|
||||||
|
|
||||||
|
\draw[fill=white] (2, 0) circle (1mm);
|
||||||
|
\draw[fill=white] (2.75, 0) circle (1mm);
|
||||||
|
\draw[fill=white] (2, 1) circle (1mm);
|
||||||
|
\draw[fill=white] (2.75, 1) circle (1mm);
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
\end{minipage}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
A switch is always in the \say{A} or \say{B} state. Its state changes when you toggle the switch on the wall. Each circle represents a terminal on the switch, and lines represent electrical connections. \par
|
||||||
|
The two crossing wires in the A state of the four-way switch are \textbf{not} connected.
|
||||||
|
|
||||||
|
\example{}
|
||||||
|
First, Ivan wires a simple light in the kitchen: one switch, one lamp. The result is the following circuit:
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}
|
||||||
|
|
||||||
|
\begin{scope}[layer = nodes]
|
||||||
|
|
||||||
|
\draw[fill=white] (-1.5, 0) circle (1mm);
|
||||||
|
|
||||||
|
\node (h) at (-2, 0) {\texttt{Hot}};
|
||||||
|
|
||||||
|
\draw[fill=white] (0, 0) circle (1mm);
|
||||||
|
\draw[fill=white] (0.75, 0) circle (1mm);
|
||||||
|
|
||||||
|
\node[
|
||||||
|
circle,
|
||||||
|
draw = black,
|
||||||
|
fill = white,
|
||||||
|
label = below:\texttt{Lamp}
|
||||||
|
] (l) at (2,0) {$\circledast$};
|
||||||
|
|
||||||
|
\draw[fill=white] (3.5, 0) circle (1mm);
|
||||||
|
|
||||||
|
\node (n) at (4.5, 0) {\texttt{Neutral}};
|
||||||
|
|
||||||
|
\end{scope}
|
||||||
|
|
||||||
|
\draw[line width=1mm,cap=round] (-1.5, 0) -- (0, 0);
|
||||||
|
\draw[line width=1mm,cap=round] (0, 0) -- (0.6, 0.4);
|
||||||
|
\draw[line width=1mm,cap=round] (0.75, 0) -- (l);
|
||||||
|
\draw[line width=1mm,cap=round] (l) -- (3.5,0);
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Ivan now needs to wire a hallway. It has two switches, one at each end. \par
|
||||||
|
Toggling either switch should toggle the single lamp in the middle. \par
|
||||||
|
Which switches should Ivan use, and how should he connect their terminals? \par
|
||||||
|
\hint{There are two solutions. One is clever, the other is deadly.}
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Next, Ivan goes to the bedroom. There is one switch by the door and one on each side of the bed. How can he make these three switches control one lamp?
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{Bonus}
|
||||||
|
Is it possible to do the same with four or more switches? If so, how?
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Ivan the Electrician/meta.toml
Normal file
6
src/Warm-Ups/Ivan the Electrician/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "Ivan the Electrician"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = false
|
68
src/Warm-Ups/Jump Chess/main.tex
Executable file
68
src/Warm-Ups/Jump Chess/main.tex
Executable file
@ -0,0 +1,68 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
hidewarning,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\usepackage{chessboard}
|
||||||
|
\usepackage{xskak}
|
||||||
|
|
||||||
|
\title{Warm Up: Jump Chess}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
Consider a normal game of chess with the following modification:
|
||||||
|
we allow queens and rooks to jump as far across the board as they want,
|
||||||
|
within their usual range of movement.
|
||||||
|
As a result, queens and rooks may check the opposing
|
||||||
|
king from a distance, ignoring any pieces in between.
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
With these modified rules, the outcome of a game can be determined. \par
|
||||||
|
Who wins, or do black and white draw with ideal play? \par
|
||||||
|
(As in regulation chess, white moves first.)
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\newchessgame
|
||||||
|
\chessboard[normalboard,showmover=false]
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\begin{solution}
|
||||||
|
Win for white in 5 moves.
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
Trap black in the top row. If Black is kept in check
|
||||||
|
every move, his ability to respond is limited and the game tree
|
||||||
|
remains small.
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
Capture an opposing rook with Rxa8+.
|
||||||
|
The king is in check and can't move, so black must capture this rook.
|
||||||
|
If black recaptures with his other rook, respond with Qh5\#.
|
||||||
|
|
||||||
|
Otherwise, black must recapture Qxa8. Now go Qa4+.
|
||||||
|
If black captures with his queen Qxa4, then Rxh8\#.
|
||||||
|
So, black must move Kd8.
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
Finish with the following: \par
|
||||||
|
Qd4+ Ke8 \par
|
||||||
|
Rxh8+ Qxh8 \par
|
||||||
|
Qxh8\#
|
||||||
|
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Jump Chess/meta.toml
Normal file
6
src/Warm-Ups/Jump Chess/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "Jump Chess"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = true
|
54
src/Warm-Ups/Mario Kart/main.tex
Executable file
54
src/Warm-Ups/Mario Kart/main.tex
Executable file
@ -0,0 +1,54 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
hidewarning,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
|
||||||
|
\title{Warm-Up: Mario Kart}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
A standard Mario Kart cup consists of 12 players and four races. \par
|
||||||
|
Each race is scored as follows:
|
||||||
|
\begin{itemize}
|
||||||
|
\item 15 points are awarded for first place;
|
||||||
|
\item 12 for second;
|
||||||
|
\item and $(13 - \text{place})$ otherwise.
|
||||||
|
\end{itemize}
|
||||||
|
In any one race, no players may tie.
|
||||||
|
A player's score at the end of a cup is the sum of their scores for each of the four races.
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
An $n$-way tie occurs when the top $n$ players have the same score at the end of a round. \par
|
||||||
|
What is the largest possible $n$, and how is it achieved?
|
||||||
|
|
||||||
|
\begin{solution}
|
||||||
|
A 12-way tie is impossible, since the total number of point is not divisible by 12.
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
A 11-way tie is possible, with a top score of 28:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Four players finish $1^\text{st}$, $3^\text{ed}$, $11^\text{th}$, and $12^\text{th}$;
|
||||||
|
|
||||||
|
% spell:off
|
||||||
|
\item Four players finish $2^\text{nd}$, $4^\text{th}$, $9^\text{th}$, and $10^\text{th}$;
|
||||||
|
% spell:on
|
||||||
|
|
||||||
|
\item Two players finish fifth twice and seventh twice,
|
||||||
|
\item One player finishes sixth in each race.
|
||||||
|
\end{itemize}
|
||||||
|
The final player always finishes eighth, with a non-tie score of 20.
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Mario Kart/meta.toml
Normal file
6
src/Warm-Ups/Mario Kart/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "Mario Kart"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = true
|
132
src/Warm-Ups/Odd Dice/main.tex
Executable file
132
src/Warm-Ups/Odd Dice/main.tex
Executable file
@ -0,0 +1,132 @@
|
|||||||
|
\documentclass[
|
||||||
|
nosolutions,
|
||||||
|
hidewarning,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\usepackage{tikz}
|
||||||
|
\usetikzlibrary{arrows.meta}
|
||||||
|
\usetikzlibrary{shapes.geometric}
|
||||||
|
|
||||||
|
% We put nodes in a separate layer, so we can
|
||||||
|
% slightly overlap with paths for a perfect fit
|
||||||
|
\pgfdeclarelayer{nodes}
|
||||||
|
\pgfdeclarelayer{path}
|
||||||
|
\pgfsetlayers{main,nodes}
|
||||||
|
|
||||||
|
% Layer settings
|
||||||
|
\tikzset{
|
||||||
|
% Layer hack, lets us write
|
||||||
|
% later = * in scopes.
|
||||||
|
layer/.style = {
|
||||||
|
execute at begin scope={\pgfonlayer{#1}},
|
||||||
|
execute at end scope={\endpgfonlayer}
|
||||||
|
},
|
||||||
|
%
|
||||||
|
% Arrowhead tweak
|
||||||
|
>={Latex[ width=2mm, length=2mm ]},
|
||||||
|
%
|
||||||
|
% Nodes
|
||||||
|
main/.style = {
|
||||||
|
draw,
|
||||||
|
circle,
|
||||||
|
fill = white,
|
||||||
|
line width = 0.35mm
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
\title{Warm Up: Odd Dice}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
|
||||||
|
We say a set of dice $\{A, B, C\}$ is \textit{nontransitive}
|
||||||
|
if, on average, $A$ beats $B$, $B$ beats $C$, and $C$ beats $A$.
|
||||||
|
In other words, we get a counterintuitive \say{rock - paper - scissors} effect.
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
Create a set of nontransitive six-sided dice. \par
|
||||||
|
\hint{All sides should be numbered with positive integers less than 10.}
|
||||||
|
|
||||||
|
\begin{solution}
|
||||||
|
One possible set can be numbered as follows:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Die $A$: $2, 2, 4, 4, 9, 9$
|
||||||
|
\item Die $B$: $1, 1, 6, 6, 8, 8$
|
||||||
|
\item Die $C$: $3, 3, 5, 5, 7, 7$
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\vspace{4mm}
|
||||||
|
|
||||||
|
Another solution is below:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Die $A$: $3, 3, 3, 3, 3, 6$
|
||||||
|
\item Die $B$: $2, 2, 2, 5, 5, 5$
|
||||||
|
\item Die $C$: $1, 4, 4, 4, 4, 4$
|
||||||
|
\end{itemize}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Now, consider the set of six-sided dice below:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Die $A$: $4, 4, 4, 4, 4, 9$
|
||||||
|
\item Die $B$: $3, 3, 3, 3, 8, 8$
|
||||||
|
\item Die $C$: $2, 2, 2, 7, 7, 7$
|
||||||
|
\item Die $D$: $1, 1, 6, 6, 6, 6$
|
||||||
|
\item Die $E$: $0, 5, 5, 5, 5, 5$
|
||||||
|
\end{itemize}
|
||||||
|
On average, which die beats each of the others? Draw a graph. \par
|
||||||
|
|
||||||
|
\begin{solution}
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}[scale = 0.5]
|
||||||
|
\begin{scope}[layer = nodes]
|
||||||
|
\node[main] (a) at (-2, 0.2) {$a$};
|
||||||
|
\node[main] (b) at (0, 2) {$b$};
|
||||||
|
\node[main] (c) at (2, 0.2) {$c$};
|
||||||
|
\node[main] (d) at (1, -2) {$d$};
|
||||||
|
\node[main] (e) at (-1, -2) {$e$};
|
||||||
|
\end{scope}
|
||||||
|
|
||||||
|
\draw[->]
|
||||||
|
(a) edge (b)
|
||||||
|
(b) edge (c)
|
||||||
|
(c) edge (d)
|
||||||
|
(d) edge (e)
|
||||||
|
(e) edge (a)
|
||||||
|
|
||||||
|
(a) edge (c)
|
||||||
|
(b) edge (d)
|
||||||
|
(c) edge (e)
|
||||||
|
(d) edge (a)
|
||||||
|
(e) edge (b)
|
||||||
|
;
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
Now, say we roll each die twice. What happens to the graph above?
|
||||||
|
|
||||||
|
\begin{solution}
|
||||||
|
The direction of each edge is reversed!
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Odd Dice/meta.toml
Normal file
6
src/Warm-Ups/Odd Dice/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "Odd Dice"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = true
|
80
src/Warm-Ups/Painting/main.tex
Executable file
80
src/Warm-Ups/Painting/main.tex
Executable file
@ -0,0 +1,80 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
\title{Warm-Up: The Painting}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today.}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
You have a painting on a string. \par
|
||||||
|
Hang the painting on two nails so that if either is removed, the painting falls. \par
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
You may detach the string as you hang the painting, but it must be re-attached once you're done.
|
||||||
|
|
||||||
|
\note{The solution to this problem isn't a \say{think outside the box} trick, it's a clever wrapping of the string.}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}[scale=2.0]
|
||||||
|
\draw[line width = 0.5mm]
|
||||||
|
(0, 1) --
|
||||||
|
(2, 1) --
|
||||||
|
(2, 0) --
|
||||||
|
(0, 0) --
|
||||||
|
cycle
|
||||||
|
;
|
||||||
|
|
||||||
|
\draw[line width = 0.5mm, dotted]
|
||||||
|
(0.1, 1) --
|
||||||
|
(1, 1.5) --
|
||||||
|
(1.9, 1)
|
||||||
|
;
|
||||||
|
|
||||||
|
\fill (1, 1.5) circle[radius = 0.25mm];
|
||||||
|
|
||||||
|
|
||||||
|
\draw[line width = 0.2mm]
|
||||||
|
(0.66, 0.66) --
|
||||||
|
(0.66, 0.35) --
|
||||||
|
(0.60, 0.1)
|
||||||
|
(0.72, 0.1)--(0.66, 0.35)
|
||||||
|
;
|
||||||
|
|
||||||
|
\draw[line width = 0.2mm]
|
||||||
|
(0.66, 0.575) --
|
||||||
|
(0.6, 0.475) --
|
||||||
|
(0.525, 0.575)
|
||||||
|
(0.66, 0.575) --
|
||||||
|
(0.72, 0.475) --
|
||||||
|
(0.795, 0.575)
|
||||||
|
;
|
||||||
|
|
||||||
|
\fill[color=white] (0.66, 0.66) circle[radius = 0.8mm];
|
||||||
|
\draw (0.66, 0.66) circle[radius = 0.8mm];
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{solution}
|
||||||
|
|
||||||
|
Say we have a left nail and a right nail. The path of the string is as follows:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Start on the left
|
||||||
|
\item Move over both nails, wrap right nail cw
|
||||||
|
\item Wrap left nail ccw
|
||||||
|
\item Wrap right nail ccw
|
||||||
|
\item Exit downwards, in between both nails
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Painting/meta.toml
Normal file
6
src/Warm-Ups/Painting/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "The Painting"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = true
|
57
src/Warm-Ups/Partition Products/main.tex
Executable file
57
src/Warm-Ups/Partition Products/main.tex
Executable file
@ -0,0 +1,57 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
|
||||||
|
\title{Warm-Up: Partition Products}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today.}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Take any positive integer $n$. \par
|
||||||
|
Now, write it as sum of smaller positive integers: $n = a_1 + a_2 + ... + a_k$ \par
|
||||||
|
Maximize the product $a_1 \times a_2 \times ... \times a_k$
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\begin{solution}
|
||||||
|
|
||||||
|
\textbf{Interesting Solution:}
|
||||||
|
|
||||||
|
Of course, all $a_i$ should be greater than $1$. \par
|
||||||
|
Also, all $a_i$ should be smaller than four, since $x \leq x(x-2)$ if $x \geq 4$. \par
|
||||||
|
Thus, we're left with sequences that only contain 2 and 3. \par
|
||||||
|
\note{Note that two twos are the same as one four, but we exclude fours for simplicity.}
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
Finally, we see that $3^2 > 2^3$, so any three twos are better repackaged as two threes. \par
|
||||||
|
The best sequence $a_i$ thus consists of a maximal number of threes followed by 0, 1, or 2 twos.
|
||||||
|
|
||||||
|
\linehack{}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\textbf{Calculus Solution:}
|
||||||
|
|
||||||
|
First, solve this problem for equal, non-integer $a_i$:
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
We know $n = \prod{a_i}$, thus $\ln(n) = \sum{\ln(a_i)}$. \par
|
||||||
|
If all $a_i$ are equal, we get $\ln(n) = k \times \ln(n / k)$. \par
|
||||||
|
Derive wrt $k$ and set to zero to get $\ln(n / k) = 1$ \par
|
||||||
|
So $k = n / e$ and $n / k = e \approx 2.7$
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
If we try to approximate this with integers, we get the same solution as above.
|
||||||
|
\end{solution}
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Partition Products/meta.toml
Normal file
6
src/Warm-Ups/Partition Products/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "Partition Products"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = true
|
47
src/Warm-Ups/Passing Balls/main.tex
Executable file
47
src/Warm-Ups/Passing Balls/main.tex
Executable file
@ -0,0 +1,47 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
\usepackage{graphicx}
|
||||||
|
|
||||||
|
\title{Warm-Up: Passing Balls}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
|
||||||
|
Twelve people are standing in a circle. Each is assigned a number between 1 and 12. \par
|
||||||
|
Participants numbered 1, 2, 3, and 4 hold red, green, yellow, and black balls, respectively. \par
|
||||||
|
Everyone else is empty-handed.
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
Each participant can pass their ball to any student that is exactly 5 positions away. \par
|
||||||
|
Balls cannot be passed to someone who has one in hand.
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
After a number of passes, the first four participants again hold all the balls. \par
|
||||||
|
Participant 1 has a black ball. Which balls are held by participants 2, 3, and 4?
|
||||||
|
|
||||||
|
\begin{solution}
|
||||||
|
\begin{itemize}
|
||||||
|
\item the graph of possible moves is isomorphic to a circle (since 5 and 12 are coprime),
|
||||||
|
\item but the balls get passed around, so swapping the place of any two balls is not allowed. \\
|
||||||
|
Therefore, the balls will stay in their initial (cyclic) order:
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\includegraphics[width=\textwidth]{pass-sol.png}
|
||||||
|
\end{center}
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Passing Balls/meta.toml
Normal file
6
src/Warm-Ups/Passing Balls/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "Passing Balls"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = true
|
BIN
src/Warm-Ups/Passing Balls/pass-sol.png
Normal file
BIN
src/Warm-Ups/Passing Balls/pass-sol.png
Normal file
Binary file not shown.
After Width: | Height: | Size: 47 KiB |
34
src/Warm-Ups/Prime Factors/main.tex
Executable file
34
src/Warm-Ups/Prime Factors/main.tex
Executable file
@ -0,0 +1,34 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber,
|
||||||
|
hidewarning
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
\title{Warm-Up: Prime Factors}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today.}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
What proportion of integers have $2$ as their smallest prime factor?
|
||||||
|
% 1^2
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
What proportion of integers have $3$ as their second-smallest prime factor?
|
||||||
|
% 1/6
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
What is the median second-smallest prime factor?
|
||||||
|
% 37
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Prime Factors/meta.toml
Normal file
6
src/Warm-Ups/Prime Factors/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "Prime Factors"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = false
|
153
src/Warm-Ups/Regex/main.tex
Normal file
153
src/Warm-Ups/Regex/main.tex
Normal file
@ -0,0 +1,153 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
hidewarning,
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
|
||||||
|
\usepackage{xcolor}
|
||||||
|
\usepackage{soul}
|
||||||
|
\usepackage{hyperref}
|
||||||
|
|
||||||
|
\definecolor{Light}{gray}{.90}
|
||||||
|
\sethlcolor{Light}
|
||||||
|
\newcommand{\htexttt}[1]{\texttt{\hl{#1}}}
|
||||||
|
|
||||||
|
|
||||||
|
\title{The Regex Warm-Up}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
|
||||||
|
Last time, we discussed Deterministic Finite Automata. One interesting application of these mathematical objects is found in computer science: Regular Expressions. \par
|
||||||
|
This is often abbreviated \say{regex}, which is pronounced like \say{gif.}
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
Regex is a language used to specify patterns in a string. You can think of it as a concise way to define a DFA, using text instead of a huge graph. \par
|
||||||
|
|
||||||
|
Often enough, a clever regex pattern can do the work of a few hundred lines of code.
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
Like the DFAs we've studied, a regex pattern \textit{accepts} or \textit{rejects} a string. However, we don't usually use this terminology with regex, and instead say that a string \textit{matches} or \textit{doesn't match} a pattern.
|
||||||
|
|
||||||
|
\vspace{5mm}
|
||||||
|
|
||||||
|
Regex strings consist of characters, quantifiers, sets, and groups.
|
||||||
|
|
||||||
|
\vspace{5mm}
|
||||||
|
|
||||||
|
\textbf{Quantifiers} \par
|
||||||
|
Quantifiers specify how many of a character to match. \par
|
||||||
|
There are four of these: \htexttt{+}, \htexttt{*}, \htexttt{?}, and \htexttt{\{ \}}
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
\htexttt{+} means \say{match one or more of the preceding token} \par
|
||||||
|
\htexttt{*} means \say{match zero or more of the preceding token}
|
||||||
|
|
||||||
|
For example, the pattern \htexttt{ca+t} will match the following strings:
|
||||||
|
\begin{itemize}
|
||||||
|
\item \texttt{cat}
|
||||||
|
\item \texttt{caat}
|
||||||
|
\item \texttt{caaaaaaaat}
|
||||||
|
\end{itemize}
|
||||||
|
\htexttt{ca+t} will \textbf{not} match the string \texttt{ct}. \par
|
||||||
|
The pattern \htexttt{ca*t} will match all the strings above, including \texttt{ct}.
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
|
||||||
|
\htexttt{?} means \say{match one or none of the preceding token} \par
|
||||||
|
The pattern \htexttt{linea?r} will match only \texttt{linear} and \texttt{liner}.
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
Brackets \htexttt{\{min, max\}} are the most flexible quantifier. \par
|
||||||
|
They specify exactly how many tokens to match: \par
|
||||||
|
\htexttt{ab\{2\}a} will match only \texttt{abba}. \par
|
||||||
|
\htexttt{ab\{1,3\}a} will match only \texttt{aba}, \texttt{abba}, and \texttt{abbba}. \par
|
||||||
|
% spell:off
|
||||||
|
\htexttt{ab\{2,\}a} will match any \texttt{ab...ba} with at least two \texttt{b}s.
|
||||||
|
% spell:on
|
||||||
|
|
||||||
|
\vspace{5mm}
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Write the patterns \htexttt{a*} and \htexttt{a+} using only \htexttt{\{ \}}.
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Draw a DFA equivalent to the regex pattern \htexttt{01*0}.
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\textbf{Characters, Sets, and Groups} \par
|
||||||
|
In the previous section, we saw how we can specify characters literally: \par
|
||||||
|
\texttt{a+} means \say{one or more \texttt{a} character}
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
There are, of course, other ways we can specify characters.
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
The first such way is the \textit{set}, denoted \htexttt{[ ]}. A set can pretend to be any character inside it. \par
|
||||||
|
For example, \htexttt{m[aoy]th} will match \texttt{math}, \texttt{moth}, or \texttt{myth}. \par
|
||||||
|
\htexttt{a[01]+b} will match \texttt{a0b}, \texttt{a111b}, \texttt{a1100110b}, and any other similar string. \par
|
||||||
|
You may negate a set with a \htexttt{\textasciicircum}. \par
|
||||||
|
\htexttt{[\textasciicircum abc]} will match any character except \texttt{a}, \texttt{b}, or \texttt{c}, including symbols and spaces.
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
If we want to keep characters together, we can use the \textit{group}, denoted \htexttt{( )}. \par
|
||||||
|
|
||||||
|
Groups work exactly as you'd expect, representing an atomic\footnotemark{} group of characters. \par
|
||||||
|
\htexttt{a(01)+b} will match \texttt{a01b} and \texttt{a010101b}, but will \textbf{not} match \texttt{a0b}, \texttt{a1b}, or \texttt{a1100110b}.
|
||||||
|
|
||||||
|
\footnotetext{In other words, \say{unbreakable}}
|
||||||
|
|
||||||
|
|
||||||
|
\problem{}<regex>
|
||||||
|
You are now familiar with most of the tools regex has to offer. \par
|
||||||
|
Write patterns that match the following strings:
|
||||||
|
\begin{enumerate}[itemsep=1mm]
|
||||||
|
\item An ISO-8601 date, like \texttt{2022-10-29}. \par
|
||||||
|
\hint{Invalid dates like \texttt{2022-13-29} should also be matched.}
|
||||||
|
|
||||||
|
\item An email address. \par
|
||||||
|
\hint{Don't forget about subdomains, like \texttt{math.ucla.edu}.}
|
||||||
|
|
||||||
|
\item A UCLA room number, like \texttt{MS 5118} or \texttt{Kinsey 1220B}.
|
||||||
|
|
||||||
|
\item Any ISBN-10 of the form \texttt{0-316-00395-7}. \par
|
||||||
|
\hint{Remember that the check digit may be an \texttt{X}. Dashes are optional.}
|
||||||
|
|
||||||
|
\item A word of even length. \par
|
||||||
|
\hint{The set \texttt{[A-z]} contains every english letter, capitalized and lowercase. \\
|
||||||
|
\texttt{[a-z]} will only match lowercase letters.}
|
||||||
|
|
||||||
|
\item A word with exactly 3 vowels. \par
|
||||||
|
\hint{The special token \texttt{\textbackslash w} will match any word character. It is equivalent to \texttt{[A-z0-9\_]} \\ \texttt{\_} stands for a literal underscore.}
|
||||||
|
|
||||||
|
\item A word that has even length and exactly 3 vowels.
|
||||||
|
|
||||||
|
\item A sentence that does not start with a capital letter.
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
If you'd like to know more, check out \url{https://regexr.com}. It offers an interactive regex prompt, as well as a cheatsheet that explains every other regex token there is. \par
|
||||||
|
You will find a nice set of challenges at \url{https://alf.nu/RegexGolf}.
|
||||||
|
I especially encourage you to look into this if you are interested in computer science.
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Regex/meta.toml
Normal file
6
src/Warm-Ups/Regex/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "Regex"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = false
|
128
src/Warm-Ups/Rootbound/main.tex
Executable file
128
src/Warm-Ups/Rootbound/main.tex
Executable file
@ -0,0 +1,128 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
hidewarning,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
\def\utri#1#2{
|
||||||
|
\draw (#1,#2) -- ++(60:1) -- ++(-60:1) -- cycle;
|
||||||
|
}
|
||||||
|
\def\dtri#1#2{
|
||||||
|
\draw (#1,#2) -- (#1+1, #2) -- ++(-120:1) -- cycle;
|
||||||
|
}
|
||||||
|
|
||||||
|
\def\board#1{
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}[scale=#1]
|
||||||
|
\draw (0,0) -- (6, 0);
|
||||||
|
\foreach \y in {0,...,5} {
|
||||||
|
\foreach[expand list] \x in {-6,-5,...,\y} {
|
||||||
|
\utri{\x + 6 - 0.5 - \y * 0.5}{\y * -0.86603 - 0.86603}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\foreach \y in {5,...,0} {
|
||||||
|
\foreach[expand list] \x in {-5,-4,...,\y} {
|
||||||
|
\utri{\x + 5 - \y * 0.5}{\y * 0.86603 - 12 * 0.86603}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
\draw (-3, -6 * 0.86603) -- (0, -12 * 0.86603);
|
||||||
|
\draw (9, -6 * 0.86603) -- (6, -12 * 0.86603);
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
\geometry{
|
||||||
|
paper = letterpaper,
|
||||||
|
top = 20mm,
|
||||||
|
bottom = 20mm,
|
||||||
|
left = 20mm,
|
||||||
|
right = 20mm,
|
||||||
|
headheight = 75mm,
|
||||||
|
footskip = 15mm
|
||||||
|
}
|
||||||
|
|
||||||
|
\title{Rootbound}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\uptitlel{Warm-ups}
|
||||||
|
\subtitle{
|
||||||
|
Prepared by Mark on \today. \par
|
||||||
|
Based on \url{https://cjffield.com/rules/rootbound.pdf}
|
||||||
|
}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\generic{Playing the game:}
|
||||||
|
% Official size is 7 spaces per side, but variations work.
|
||||||
|
You will need a pencil, an eraser, and a printed hexagonal board. \par
|
||||||
|
Draw your pieces lightly---you may need to erase them. \par
|
||||||
|
Turns alternate. Each player draws distinct pieces (for example, circles and squares).
|
||||||
|
|
||||||
|
\vspace{2mm}
|
||||||
|
|
||||||
|
An example board is drawn below. \say{Spaces} are the corners of the triangular cells, \textit{not} the cells themselves.
|
||||||
|
Points on the edge of the board are also spaces.
|
||||||
|
|
||||||
|
\board{0.4}
|
||||||
|
|
||||||
|
During the first turn of the game, the first player must place one piece onto any empty space.
|
||||||
|
From then on, each player may place either one or two pieces onto empty spaces, respecting the restrictions below.
|
||||||
|
Players may not skip their turn unless they have no legal move.
|
||||||
|
|
||||||
|
|
||||||
|
\generic{Claimed regions:}
|
||||||
|
A \textit{claimed region} is an area of empty spaces that is only adjacent to pieces of a single color. \par
|
||||||
|
No regions are considered \say{claimed} until both players have had a turn.
|
||||||
|
|
||||||
|
|
||||||
|
\generic{Dead groups:}
|
||||||
|
A group of pieces is considered \textit{dead} if it is cut off from all other same-colored groups and is not
|
||||||
|
adjacent to a claimed region. At the end of each turn (except each player's first), erase all
|
||||||
|
dead pieces that belong to the inactive player.
|
||||||
|
|
||||||
|
\generic{Restrictions:}
|
||||||
|
\begin{itemize}[itemsep=1mm]
|
||||||
|
\item A piece may not be placed inside a claimed region.
|
||||||
|
\item A piece may not be placed adjacent to two (or more) same-colored pieces if those pieces are also
|
||||||
|
neighbors of each other. In other words, you may not form small triangles of one color.
|
||||||
|
|
||||||
|
\item When placing two pieces adjacent to each other in a tun, they may not form a
|
||||||
|
straight line with a third pre-existing piece of their color.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
|
\generic{Ending the game:}
|
||||||
|
The game ends when both players run out of legal moves.
|
||||||
|
Each player's score is calculated by counting the number of empty spaces in regions they have claimed. \par
|
||||||
|
The player with the highest score wins.
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\begin{ORMCbox}{Notes}{ogrape!10!white}{ogrape}
|
||||||
|
\begin{itemize}
|
||||||
|
\item
|
||||||
|
Each player needs to make multiple groups before the first player's second turn. \par
|
||||||
|
Otherwise, all their pieces will be removed from the game, resulting in an early loss. \par
|
||||||
|
Do not make your first moves next to each other!
|
||||||
|
|
||||||
|
\item Groups are easiest to secure near the corners or along the edges. Play there first. \par
|
||||||
|
\end{itemize}
|
||||||
|
\end{ORMCbox}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
|
\board{1.1}
|
||||||
|
\vfill
|
||||||
|
\board{1.1}
|
||||||
|
|
||||||
|
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Rootbound/meta.toml
Normal file
6
src/Warm-Ups/Rootbound/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "Rootbound"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = false
|
89
src/Warm-Ups/Sysadmin/main.tex
Executable file
89
src/Warm-Ups/Sysadmin/main.tex
Executable file
@ -0,0 +1,89 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
hidewarning,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\usepackage{tikz}
|
||||||
|
|
||||||
|
|
||||||
|
\title{The Sysadmin's Warm-Up}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today}
|
||||||
|
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
|
||||||
|
Most of you have seen a hard drive. Many have touched one, and a lucky few have poked around inside one. These devices have two interesting properties:
|
||||||
|
|
||||||
|
\begin{enumerate}
|
||||||
|
\item They hold valuable data
|
||||||
|
\item They eventually fail
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
Needless to say, this is a problem. \par
|
||||||
|
We need to design a system that allows hard drives to fail without data loss.
|
||||||
|
|
||||||
|
\definition{}
|
||||||
|
You can think of a hard drive as a long string of bits. \par
|
||||||
|
Assume all hard drives can store 1 TiB of data.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}
|
||||||
|
|
||||||
|
\node[above] at (1/2, 0) {Drive A};
|
||||||
|
\draw (0cm, 0cm) -- (0cm, -3cm);
|
||||||
|
\draw (1cm, 0cm) -- (1cm, -3cm);
|
||||||
|
\foreach \i in {0,...,-6} {
|
||||||
|
\draw (0cm,\i cm / 2) -- (1cm ,\i cm / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
\node at (1/2, - 1 / 4) {1};
|
||||||
|
\node at (1/2, - 3 / 4) {1};
|
||||||
|
\node at (1/2, - 5 / 4) {0};
|
||||||
|
\node at (1/2, - 7 / 4) {...};
|
||||||
|
\node at (1/2, - 9 / 4) {1};
|
||||||
|
\node at (1/2, -11 / 4) {0};
|
||||||
|
|
||||||
|
|
||||||
|
\node[above] at (5/2, 0) {Drive B};
|
||||||
|
\draw (2cm, 0cm) -- (2cm, -3cm);
|
||||||
|
\draw (3cm, 0cm) -- (3cm, -3cm);
|
||||||
|
\foreach \i in {0,...,-6} {
|
||||||
|
\draw (2cm,\i cm / 2) -- (3cm ,\i cm / 2);
|
||||||
|
}
|
||||||
|
|
||||||
|
\node at (5/2, - 1 / 4) {0};
|
||||||
|
\node at (5/2, - 3 / 4) {1};
|
||||||
|
\node at (5/2, - 5 / 4) {0};
|
||||||
|
\node at (5/2, - 7 / 4) {...};
|
||||||
|
\node at (5/2, - 9 / 4) {0};
|
||||||
|
\node at (5/2, -11 / 4) {1};
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Suppose we have two hard drives. How can we arrange our data so that...
|
||||||
|
\begin{enumerate}
|
||||||
|
\item We get 1 TiB of usable storage
|
||||||
|
\item We lose no data if any one drive fails
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Suppose we have three hard drives. How can we arrange our data so that...
|
||||||
|
\begin{enumerate}
|
||||||
|
\item We get 2 TiB of usable storage
|
||||||
|
\item We lose no data if any one drive fails
|
||||||
|
\end{enumerate}
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Sysadmin/meta.toml
Normal file
6
src/Warm-Ups/Sysadmin/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "The Sysadmin's Warm-Up"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = false
|
30
src/Warm-Ups/Travellers/main.tex
Executable file
30
src/Warm-Ups/Travellers/main.tex
Executable file
@ -0,0 +1,30 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
\title{Warm-Up: Travellers}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Four travellers are on a plane, each moving along a straight line at an arbitrary constant speed. \par
|
||||||
|
No two of their paths are parallel, and no three intersect at the same point. \par
|
||||||
|
We know that traveller A has met travelers B, C, and D, \par
|
||||||
|
and that traveller B has met C and D (and A). Show that C and D must also have met. \par
|
||||||
|
|
||||||
|
\begin{solution}
|
||||||
|
When a body travels at a constant speed, its graph with respect to time is a straight line. \par
|
||||||
|
So, we add time axis in the third dimension, perpendicular to our plane. \par
|
||||||
|
Naturally, the projection of each of these onto the plane corresponds to a road.
|
||||||
|
|
||||||
|
Now, note that two intersecting lines define a plane and use the conditions in the problem to show that no two lines are parallel.
|
||||||
|
\end{solution}
|
||||||
|
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Travellers/meta.toml
Normal file
6
src/Warm-Ups/Travellers/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "Travellers"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = true
|
43
src/Warm-Ups/What's an AST/main.tex
Executable file
43
src/Warm-Ups/What's an AST/main.tex
Executable file
@ -0,0 +1,43 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
hidewarning,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
|
||||||
|
\usepackage[linguistics]{forest}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\title{Warm-Up: What's an AST?}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today. \\ Based on a true story.}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
Say you have a valid string of simple arithmetic that contains no unary operators (like $3!$ or $-4$) and no parenthesis:
|
||||||
|
$$
|
||||||
|
3 + 9 \times 8 \div 5 \land 6
|
||||||
|
$$
|
||||||
|
|
||||||
|
You may assume that all numbers and operators in this string consist of exactly one character. \\
|
||||||
|
|
||||||
|
Devise an algorithm that turns this string into a tree (as shown below), respecting the order of operations $[\land, \times, \div, +, -]$.
|
||||||
|
|
||||||
|
\begin{center}
|
||||||
|
\begin{forest}
|
||||||
|
[$+$
|
||||||
|
[3]
|
||||||
|
[$\div$
|
||||||
|
[$\times$[9][8]]
|
||||||
|
[$\land$[5][6]]
|
||||||
|
]
|
||||||
|
]
|
||||||
|
\end{forest}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\end{document}
|
6
src/Warm-Ups/What's an AST/meta.toml
Normal file
6
src/Warm-Ups/What's an AST/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "What's an AST?"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = false
|
66
src/Warm-Ups/Wild Tic-Tac-Toe/main.tex
Executable file
66
src/Warm-Ups/Wild Tic-Tac-Toe/main.tex
Executable file
@ -0,0 +1,66 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
hidewarning,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
% x,y,scale,style
|
||||||
|
\def\ttt#1#2#3#4{
|
||||||
|
\draw[#4] (#1, #2+#3) -- (#1+#3+#3+#3, #2+#3);
|
||||||
|
\draw[#4] (#1, #2+#3+#3) -- (#1+#3+#3+#3, #2+#3+#3);
|
||||||
|
\draw[#4] (#1+#3, #2) -- (#1+#3, #2+#3+#3+#3);
|
||||||
|
\draw[#4] (#1+#3+#3, #2) -- (#1+#3+#3, #2+#3+#3+#3);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
\title{Warm-Up: Wild Tic-Tac-Toe}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today.}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
In wild tic-tac-toe, players may place either an X or O on each move. The player that first completes a
|
||||||
|
row of any three symbols wins. Show that the first player always has a winning strategy.
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}[scale=0.60]
|
||||||
|
\ttt{0}{0}{2}{line width=0.3mm}
|
||||||
|
\ttt{7}{0}{2}{line width=0.3mm}
|
||||||
|
\ttt{14}{0}{2}{line width=0.3mm}
|
||||||
|
|
||||||
|
\ttt{0}{7}{2}{line width=0.3mm}
|
||||||
|
\ttt{7}{7}{2}{line width=0.3mm}
|
||||||
|
\ttt{14}{7}{2}{line width=0.3mm}
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Now, say the first player to complete a row loses. Who has a winning strategy now?
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
\begin{center}
|
||||||
|
\begin{tikzpicture}[scale=0.60]
|
||||||
|
\ttt{0}{0}{2}{line width=0.3mm}
|
||||||
|
\ttt{7}{0}{2}{line width=0.3mm}
|
||||||
|
\ttt{14}{0}{2}{line width=0.3mm}
|
||||||
|
|
||||||
|
\ttt{0}{7}{2}{line width=0.3mm}
|
||||||
|
\ttt{7}{7}{2}{line width=0.3mm}
|
||||||
|
\ttt{14}{7}{2}{line width=0.3mm}
|
||||||
|
\end{tikzpicture}
|
||||||
|
\end{center}
|
||||||
|
|
||||||
|
|
||||||
|
\vfill
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Wild Tic-Tac-Toe/meta.toml
Normal file
6
src/Warm-Ups/Wild Tic-Tac-Toe/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "Wild Tic-Tac-Toe"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = false
|
150
src/Warm-Ups/Zeno's Furniture/main.tex
Executable file
150
src/Warm-Ups/Zeno's Furniture/main.tex
Executable file
@ -0,0 +1,150 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
|
||||||
|
\makeatletter
|
||||||
|
\newcommand{\thisone}{
|
||||||
|
\if@solutions
|
||||||
|
{\color{red} $\Leftarrow$ \texttt{this one}}
|
||||||
|
\else\fi
|
||||||
|
}
|
||||||
|
|
||||||
|
\title{Zeno's Furniture}
|
||||||
|
\uptitlel{Warm Ups}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
Zeno Furniture sells exactly five types of furniture:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Footstools
|
||||||
|
\item Hutches
|
||||||
|
\item Sideboards
|
||||||
|
\item Tables
|
||||||
|
\item Vanities
|
||||||
|
\end{itemize}
|
||||||
|
Irene buys four items, each of a different type,
|
||||||
|
and each made of exactly one kind of wood:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Maple
|
||||||
|
\item Oak
|
||||||
|
\item Pine
|
||||||
|
\item Rosewood
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
The following conditions govern Irene's purchases:
|
||||||
|
\begin{itemize}
|
||||||
|
\item Any vanity she buys is Maple.
|
||||||
|
\item Any rosewood item she buys is a sideboard.
|
||||||
|
\item If she buys a vanity, she does not buy a footstool.
|
||||||
|
\item If she buys a footstool, she also buys a table made of the same material.
|
||||||
|
\item Irene does not buy an oak table.
|
||||||
|
\item Exactly two of the items she buys are made of the same kind of wood.
|
||||||
|
\end{itemize}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Which one of the following could be an accurate
|
||||||
|
list of the items Irene buys? \par
|
||||||
|
\begin{itemize}
|
||||||
|
\item maple footstool, maple hutch, rosewood sideboard, maple table
|
||||||
|
\item oak hutch, rosewood sideboard, pine table, oak vanity
|
||||||
|
\item rosewood hutch, maple sideboard, oak table, maple vanity
|
||||||
|
\item pine footstool, rosewood sideboard, pine table, maple vanity
|
||||||
|
\item maple footstool, pine hutch, oak sideboard, maple table \thisone{}
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
If Irene buys one item made of rosewood and two items made
|
||||||
|
of maple, then which one of the following pairs could be two
|
||||||
|
of the items she buys?
|
||||||
|
\begin{itemize}
|
||||||
|
\item a rosewood sideboard and an oak footstool
|
||||||
|
\item an oak hutch and a pine sideboard
|
||||||
|
\item an oak hutch and a maple table \thisone{}
|
||||||
|
\item a maple sideboard and a maple vanity
|
||||||
|
\item a maple hutch and a maple table
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Which one of the following is a complete and accurate list
|
||||||
|
of all the woods any footstool that Irene buys could be made of?
|
||||||
|
\begin{itemize}
|
||||||
|
\item maple, oak
|
||||||
|
\item maple, pine \thisone{}
|
||||||
|
\item maple, rosewood
|
||||||
|
\item maple, oak, pine
|
||||||
|
\item maple, oak, pine, rosewood
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Suppose Irene buys a footstool. Then which one of the following
|
||||||
|
is a complete and accurate list of items and any one of which she
|
||||||
|
could buy in maple?
|
||||||
|
\begin{itemize}
|
||||||
|
\item footstool, hutch, sideboard, table, vanity
|
||||||
|
\item footstool, hutch, sideboard, table \thisone{}
|
||||||
|
\item footstool, hutch, sideboard
|
||||||
|
\item footstool, hutch
|
||||||
|
\item footstool
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Which one of the following cannot be the two items Irene
|
||||||
|
buys that are made of the same wood as each other?
|
||||||
|
\begin{itemize}
|
||||||
|
\item footstool, hutch \thisone{}
|
||||||
|
\item hutch, sideboard
|
||||||
|
\item hutch, table
|
||||||
|
\item sideboard, vanity
|
||||||
|
\item table, vanity
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
If Irene does not buy an item made of maple, then each of the
|
||||||
|
following must be true except...
|
||||||
|
\begin{itemize}
|
||||||
|
\item Irene buys a footstool
|
||||||
|
\item Irene buys a pine hutch \thisone{}
|
||||||
|
\item Irene buys a rosewood sideboard
|
||||||
|
\item Irene buys exactly one item made of oak
|
||||||
|
\item Irene buys exactly two items made of pine
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
Suppose the condition that Irene does not buy an oak table is
|
||||||
|
replaced with the condition that she does not buy a pine table.
|
||||||
|
If all the other conditions hold as originally given, which of the
|
||||||
|
following cannot be true?
|
||||||
|
\begin{itemize}
|
||||||
|
\item Irene buys an oak footstool.
|
||||||
|
\item Irene buys a hutch and a table made of the same wood.
|
||||||
|
\item Irene buys a vanity, but she does not buy an oak table.
|
||||||
|
\item Irene buys a maple table and an oak hutch.
|
||||||
|
\item Irene buys a rosewood sideboard and exactly two items made of pine. \thisone{}
|
||||||
|
\end{itemize}
|
||||||
|
\vfill
|
||||||
|
\pagebreak
|
||||||
|
|
||||||
|
\end{document}
|
6
src/Warm-Ups/Zeno's Furniture/meta.toml
Normal file
6
src/Warm-Ups/Zeno's Furniture/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "Zeno's Furniture"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = true
|
22
src/Warm-Ups/fmod/main.tex
Executable file
22
src/Warm-Ups/fmod/main.tex
Executable file
@ -0,0 +1,22 @@
|
|||||||
|
\documentclass[
|
||||||
|
solutions,
|
||||||
|
hidewarning,
|
||||||
|
singlenumbering,
|
||||||
|
nopagenumber
|
||||||
|
]{../../../lib/tex/ormc_handout}
|
||||||
|
\usepackage{../../../lib/tex/macros}
|
||||||
|
|
||||||
|
|
||||||
|
\title{Warm-Up: \texttt{fmod}}
|
||||||
|
\uptitler{\smallurl{}}
|
||||||
|
\subtitle{Prepared by Mark on \today.}
|
||||||
|
|
||||||
|
\begin{document}
|
||||||
|
|
||||||
|
\maketitle
|
||||||
|
|
||||||
|
\problem{}
|
||||||
|
I'm sure you're all familiar with how \texttt{mod(a, b)} and \texttt{remainder(a, b)} work with integers. \par
|
||||||
|
Devise an equivalent for floats (i.e, real numbers).
|
||||||
|
|
||||||
|
\end{document}
|
6
src/Warm-Ups/fmod/meta.toml
Normal file
6
src/Warm-Ups/fmod/meta.toml
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
[metadata]
|
||||||
|
title = "fmod"
|
||||||
|
|
||||||
|
[publish]
|
||||||
|
handout = true
|
||||||
|
solutions = false
|
Loading…
x
Reference in New Issue
Block a user