This commit is contained in:
Mark 2025-01-22 12:29:16 -08:00
parent 80eef6b7dc
commit 540e34d9bd
Signed by: Mark
GPG Key ID: C6D63995FE72FD80
45 changed files with 2099 additions and 0 deletions

View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "A Familiar Concept"
[publish]
handout = true
solutions = false

93
src/Warm-Ups/Adders/main.tex Executable file
View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "Adders"
[publish]
handout = true
solutions = true

187
src/Warm-Ups/Big-Tac-Toe/main.tex Executable file
View 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}

View 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
View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "Flip-Flops"
[publish]
handout = true
solutions = true

View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "Fuse Timers"
[publish]
handout = true
solutions = false

121
src/Warm-Ups/Gallery/main.tex Executable file
View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "The Gallery"
[publish]
handout = true
solutions = true

View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "Ivan the Electrician"
[publish]
handout = true
solutions = false

View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "Jump Chess"
[publish]
handout = true
solutions = true

View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "Mario Kart"
[publish]
handout = true
solutions = true

132
src/Warm-Ups/Odd Dice/main.tex Executable file
View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "Odd Dice"
[publish]
handout = true
solutions = true

80
src/Warm-Ups/Painting/main.tex Executable file
View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "The Painting"
[publish]
handout = true
solutions = true

View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "Partition Products"
[publish]
handout = true
solutions = true

View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "Passing Balls"
[publish]
handout = true
solutions = true

Binary file not shown.

After

Width:  |  Height:  |  Size: 47 KiB

View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "Prime Factors"
[publish]
handout = true
solutions = false

153
src/Warm-Ups/Regex/main.tex Normal file
View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "Regex"
[publish]
handout = true
solutions = false

128
src/Warm-Ups/Rootbound/main.tex Executable file
View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "Rootbound"
[publish]
handout = true
solutions = false

89
src/Warm-Ups/Sysadmin/main.tex Executable file
View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "The Sysadmin's Warm-Up"
[publish]
handout = true
solutions = false

View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "Travellers"
[publish]
handout = true
solutions = true

View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "What's an AST?"
[publish]
handout = true
solutions = false

View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "Wild Tic-Tac-Toe"
[publish]
handout = true
solutions = false

View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "Zeno's Furniture"
[publish]
handout = true
solutions = true

22
src/Warm-Ups/fmod/main.tex Executable file
View 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}

View File

@ -0,0 +1,6 @@
[metadata]
title = "fmod"
[publish]
handout = true
solutions = false