diff --git a/src/Warm-Ups/A Familiar Concept/main.tex b/src/Warm-Ups/A Familiar Concept/main.tex new file mode 100755 index 0000000..8a754d3 --- /dev/null +++ b/src/Warm-Ups/A Familiar Concept/main.tex @@ -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{} + 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} \ No newline at end of file diff --git a/src/Warm-Ups/A Familiar Concept/meta.toml b/src/Warm-Ups/A Familiar Concept/meta.toml new file mode 100644 index 0000000..70aa39f --- /dev/null +++ b/src/Warm-Ups/A Familiar Concept/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "A Familiar Concept" + +[publish] +handout = true +solutions = false diff --git a/src/Warm-Ups/Adders/main.tex b/src/Warm-Ups/Adders/main.tex new file mode 100755 index 0000000..ab4f1cf --- /dev/null +++ b/src/Warm-Ups/Adders/main.tex @@ -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{} + 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} \ No newline at end of file diff --git a/src/Warm-Ups/Adders/meta.toml b/src/Warm-Ups/Adders/meta.toml new file mode 100644 index 0000000..5d59390 --- /dev/null +++ b/src/Warm-Ups/Adders/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "Adders" + +[publish] +handout = true +solutions = true diff --git a/src/Warm-Ups/Big-Tac-Toe/main.tex b/src/Warm-Ups/Big-Tac-Toe/main.tex new file mode 100755 index 0000000..8f735f5 --- /dev/null +++ b/src/Warm-Ups/Big-Tac-Toe/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/Big-Tac-Toe/meta.toml b/src/Warm-Ups/Big-Tac-Toe/meta.toml new file mode 100644 index 0000000..eb2e016 --- /dev/null +++ b/src/Warm-Ups/Big-Tac-Toe/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "Big-Tac-Toe" + +[publish] +handout = true +solutions = false diff --git a/src/Warm-Ups/Flip-Flops/main.tex b/src/Warm-Ups/Flip-Flops/main.tex new file mode 100755 index 0000000..f201103 --- /dev/null +++ b/src/Warm-Ups/Flip-Flops/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/Flip-Flops/meta.toml b/src/Warm-Ups/Flip-Flops/meta.toml new file mode 100644 index 0000000..5751cb0 --- /dev/null +++ b/src/Warm-Ups/Flip-Flops/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "Flip-Flops" + +[publish] +handout = true +solutions = true diff --git a/src/Warm-Ups/Fuse Timers/main.tex b/src/Warm-Ups/Fuse Timers/main.tex new file mode 100755 index 0000000..b0c5d1a --- /dev/null +++ b/src/Warm-Ups/Fuse Timers/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/Fuse Timers/meta.toml b/src/Warm-Ups/Fuse Timers/meta.toml new file mode 100644 index 0000000..bf3cdd8 --- /dev/null +++ b/src/Warm-Ups/Fuse Timers/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "Fuse Timers" + +[publish] +handout = true +solutions = false diff --git a/src/Warm-Ups/Gallery/main.tex b/src/Warm-Ups/Gallery/main.tex new file mode 100755 index 0000000..e4541ac --- /dev/null +++ b/src/Warm-Ups/Gallery/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/Gallery/meta.toml b/src/Warm-Ups/Gallery/meta.toml new file mode 100644 index 0000000..6e093f1 --- /dev/null +++ b/src/Warm-Ups/Gallery/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "The Gallery" + +[publish] +handout = true +solutions = true diff --git a/src/Warm-Ups/Ivan the Electrician/main.tex b/src/Warm-Ups/Ivan the Electrician/main.tex new file mode 100755 index 0000000..1aabec0 --- /dev/null +++ b/src/Warm-Ups/Ivan the Electrician/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/Ivan the Electrician/meta.toml b/src/Warm-Ups/Ivan the Electrician/meta.toml new file mode 100644 index 0000000..d94781b --- /dev/null +++ b/src/Warm-Ups/Ivan the Electrician/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "Ivan the Electrician" + +[publish] +handout = true +solutions = false diff --git a/src/Warm-Ups/Jump Chess/main.tex b/src/Warm-Ups/Jump Chess/main.tex new file mode 100755 index 0000000..c1d3658 --- /dev/null +++ b/src/Warm-Ups/Jump Chess/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/Jump Chess/meta.toml b/src/Warm-Ups/Jump Chess/meta.toml new file mode 100644 index 0000000..789e618 --- /dev/null +++ b/src/Warm-Ups/Jump Chess/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "Jump Chess" + +[publish] +handout = true +solutions = true diff --git a/src/Warm-Ups/Mario Kart/main.tex b/src/Warm-Ups/Mario Kart/main.tex new file mode 100755 index 0000000..f5af8a0 --- /dev/null +++ b/src/Warm-Ups/Mario Kart/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/Mario Kart/meta.toml b/src/Warm-Ups/Mario Kart/meta.toml new file mode 100644 index 0000000..717d963 --- /dev/null +++ b/src/Warm-Ups/Mario Kart/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "Mario Kart" + +[publish] +handout = true +solutions = true diff --git a/src/Warm-Ups/Odd Dice/main.tex b/src/Warm-Ups/Odd Dice/main.tex new file mode 100755 index 0000000..270936d --- /dev/null +++ b/src/Warm-Ups/Odd Dice/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/Odd Dice/meta.toml b/src/Warm-Ups/Odd Dice/meta.toml new file mode 100644 index 0000000..93cc543 --- /dev/null +++ b/src/Warm-Ups/Odd Dice/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "Odd Dice" + +[publish] +handout = true +solutions = true diff --git a/src/Warm-Ups/Painting/main.tex b/src/Warm-Ups/Painting/main.tex new file mode 100755 index 0000000..93f0bd4 --- /dev/null +++ b/src/Warm-Ups/Painting/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/Painting/meta.toml b/src/Warm-Ups/Painting/meta.toml new file mode 100644 index 0000000..85587d2 --- /dev/null +++ b/src/Warm-Ups/Painting/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "The Painting" + +[publish] +handout = true +solutions = true diff --git a/src/Warm-Ups/Partition Products/main.tex b/src/Warm-Ups/Partition Products/main.tex new file mode 100755 index 0000000..a440b7e --- /dev/null +++ b/src/Warm-Ups/Partition Products/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/Partition Products/meta.toml b/src/Warm-Ups/Partition Products/meta.toml new file mode 100644 index 0000000..7ce2d2c --- /dev/null +++ b/src/Warm-Ups/Partition Products/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "Partition Products" + +[publish] +handout = true +solutions = true diff --git a/src/Warm-Ups/Passing Balls/main.tex b/src/Warm-Ups/Passing Balls/main.tex new file mode 100755 index 0000000..4a57dc1 --- /dev/null +++ b/src/Warm-Ups/Passing Balls/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/Passing Balls/meta.toml b/src/Warm-Ups/Passing Balls/meta.toml new file mode 100644 index 0000000..4027d2b --- /dev/null +++ b/src/Warm-Ups/Passing Balls/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "Passing Balls" + +[publish] +handout = true +solutions = true diff --git a/src/Warm-Ups/Passing Balls/pass-sol.png b/src/Warm-Ups/Passing Balls/pass-sol.png new file mode 100644 index 0000000..b052142 Binary files /dev/null and b/src/Warm-Ups/Passing Balls/pass-sol.png differ diff --git a/src/Warm-Ups/Prime Factors/main.tex b/src/Warm-Ups/Prime Factors/main.tex new file mode 100755 index 0000000..4f5a400 --- /dev/null +++ b/src/Warm-Ups/Prime Factors/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/Prime Factors/meta.toml b/src/Warm-Ups/Prime Factors/meta.toml new file mode 100644 index 0000000..dd92f66 --- /dev/null +++ b/src/Warm-Ups/Prime Factors/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "Prime Factors" + +[publish] +handout = true +solutions = false diff --git a/src/Warm-Ups/Regex/main.tex b/src/Warm-Ups/Regex/main.tex new file mode 100644 index 0000000..a8f48e7 --- /dev/null +++ b/src/Warm-Ups/Regex/main.tex @@ -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{} + 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} \ No newline at end of file diff --git a/src/Warm-Ups/Regex/meta.toml b/src/Warm-Ups/Regex/meta.toml new file mode 100644 index 0000000..960db9d --- /dev/null +++ b/src/Warm-Ups/Regex/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "Regex" + +[publish] +handout = true +solutions = false diff --git a/src/Warm-Ups/Rootbound/main.tex b/src/Warm-Ups/Rootbound/main.tex new file mode 100755 index 0000000..185dadf --- /dev/null +++ b/src/Warm-Ups/Rootbound/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/Rootbound/meta.toml b/src/Warm-Ups/Rootbound/meta.toml new file mode 100644 index 0000000..0206584 --- /dev/null +++ b/src/Warm-Ups/Rootbound/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "Rootbound" + +[publish] +handout = true +solutions = false diff --git a/src/Warm-Ups/Sysadmin/main.tex b/src/Warm-Ups/Sysadmin/main.tex new file mode 100755 index 0000000..850ff53 --- /dev/null +++ b/src/Warm-Ups/Sysadmin/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/Sysadmin/meta.toml b/src/Warm-Ups/Sysadmin/meta.toml new file mode 100644 index 0000000..e7dabe0 --- /dev/null +++ b/src/Warm-Ups/Sysadmin/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "The Sysadmin's Warm-Up" + +[publish] +handout = true +solutions = false diff --git a/src/Warm-Ups/Travellers/main.tex b/src/Warm-Ups/Travellers/main.tex new file mode 100755 index 0000000..cc38713 --- /dev/null +++ b/src/Warm-Ups/Travellers/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/Travellers/meta.toml b/src/Warm-Ups/Travellers/meta.toml new file mode 100644 index 0000000..6da7493 --- /dev/null +++ b/src/Warm-Ups/Travellers/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "Travellers" + +[publish] +handout = true +solutions = true diff --git a/src/Warm-Ups/What's an AST/main.tex b/src/Warm-Ups/What's an AST/main.tex new file mode 100755 index 0000000..39dd677 --- /dev/null +++ b/src/Warm-Ups/What's an AST/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/What's an AST/meta.toml b/src/Warm-Ups/What's an AST/meta.toml new file mode 100644 index 0000000..ee63eb3 --- /dev/null +++ b/src/Warm-Ups/What's an AST/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "What's an AST?" + +[publish] +handout = true +solutions = false diff --git a/src/Warm-Ups/Wild Tic-Tac-Toe/main.tex b/src/Warm-Ups/Wild Tic-Tac-Toe/main.tex new file mode 100755 index 0000000..b006ae0 --- /dev/null +++ b/src/Warm-Ups/Wild Tic-Tac-Toe/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/Wild Tic-Tac-Toe/meta.toml b/src/Warm-Ups/Wild Tic-Tac-Toe/meta.toml new file mode 100644 index 0000000..be38d96 --- /dev/null +++ b/src/Warm-Ups/Wild Tic-Tac-Toe/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "Wild Tic-Tac-Toe" + +[publish] +handout = true +solutions = false diff --git a/src/Warm-Ups/Zeno's Furniture/main.tex b/src/Warm-Ups/Zeno's Furniture/main.tex new file mode 100755 index 0000000..5b696d4 --- /dev/null +++ b/src/Warm-Ups/Zeno's Furniture/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/Zeno's Furniture/meta.toml b/src/Warm-Ups/Zeno's Furniture/meta.toml new file mode 100644 index 0000000..7fd5552 --- /dev/null +++ b/src/Warm-Ups/Zeno's Furniture/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "Zeno's Furniture" + +[publish] +handout = true +solutions = true diff --git a/src/Warm-Ups/fmod/main.tex b/src/Warm-Ups/fmod/main.tex new file mode 100755 index 0000000..693d94e --- /dev/null +++ b/src/Warm-Ups/fmod/main.tex @@ -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} \ No newline at end of file diff --git a/src/Warm-Ups/fmod/meta.toml b/src/Warm-Ups/fmod/meta.toml new file mode 100644 index 0000000..f031491 --- /dev/null +++ b/src/Warm-Ups/fmod/meta.toml @@ -0,0 +1,6 @@ +[metadata] +title = "fmod" + +[publish] +handout = true +solutions = false