diff --git a/lib/typst/local/handout/0.1.0/lib.typ b/lib/typst/local/handout/0.1.0/lib.typ index d9f0e32..06eddc9 100755 --- a/lib/typst/local/handout/0.1.0/lib.typ +++ b/lib/typst/local/handout/0.1.0/lib.typ @@ -91,7 +91,7 @@ let url = link( "https://betalupi.com/handouts", - "betalupi.com/handouts", + `betalupi.com/handouts`, ) make_header( diff --git a/src/Warm-Ups/A Familiar Concept/main.tex b/src/Warm-Ups/A Familiar Concept/main.tex deleted file mode 100755 index 8a754d3..0000000 --- a/src/Warm-Ups/A Familiar Concept/main.tex +++ /dev/null @@ -1,35 +0,0 @@ -\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/main.typ b/src/Warm-Ups/A Familiar Concept/main.typ new file mode 100644 index 0000000..2cfdc54 --- /dev/null +++ b/src/Warm-Ups/A Familiar Concept/main.typ @@ -0,0 +1,33 @@ +#import "@local/handout:0.1.0": * + +#show: handout.with( + title: [Warm-Up: A Familiar Concept], + by: "Mark", +) + +#problem() +Let $v = [-5, -2, 0, 1, 4, 1000]$. Find all $x$ that minimize the following metric: + +#align( + center, + box( + inset: 3mm, + $ + sum_(#sym.forall i) |v_i - x| = |v_1 - x| + |v_2 - x| + ... + |v_6 - x| + $, + ), +) + +#v(1fr) + +#problem() +Let $v = [-5, -2, 0, 1, 4, 1000, 1001]$. Find all $x$ that minimize the metric in the previous problem. + +#v(1fr) + + +#problem() +What is this metric usually called? + + +#v(0.25fr) diff --git a/src/Warm-Ups/Adders/main.tex b/src/Warm-Ups/Adders/main.tex deleted file mode 100755 index ab4f1cf..0000000 --- a/src/Warm-Ups/Adders/main.tex +++ /dev/null @@ -1,93 +0,0 @@ -\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/main.typ b/src/Warm-Ups/Adders/main.typ new file mode 100644 index 0000000..5bfce18 --- /dev/null +++ b/src/Warm-Ups/Adders/main.typ @@ -0,0 +1,85 @@ +#import "@local/handout:0.1.0": * + +#show: handout.with( + title: [Warm-Up: Adders], + by: "Mark", +) + +#problem() +Fill the following binary addition table. \ +#hint([s is "sum," c is "carry"]) + +#align( + center, + table( + columns: (9mm, 9mm, 9mm, 9mm), + align: center, + $a$, $b$, $s$, $c$, + [0], [0], [?], [?], + [0], [1], [?], [?], + [1], [0], [?], [?], + [1], [1], [?], [?], + ), +) + +#v(1fr) + +#problem() +Draw a logic circuit that atisfies the above table. \ +This is called a _half adder_. \ +#hint([You should need exactly two gates.]) + +#solution([ + $s = a #text([`xor`]) b$ \ + $c = a #text([`and`]) b$ +]) + +#v(1fr) + +#definition() +A _full adder_ is similar to a half adder, but it has an extra input: \ +a full adder takes $a$, $b$, and $c_"in"$, and produces $s$ and $c_"out"$. \ +#hint([$c_"in"$ is "carry in"]) + +#problem() +Use two half adders to construct a full adder. + +#solution([ + $ + s_1, c_1 &= "HA"(a, b) \ + s_2, c_2 &= "HA"(s_1, c_"in") \ + s_"out" &= s_2 \ + c_"out" &= "OR"(c_1, c_2) + $ + + #v(2mm) + + Of course, the class should just draw the circuit. +]) + + +#v(1fr) +#pagebreak() + + + +#problem(label: "ripple-adder") +How can we add two four-bit binary numbers using the full adder? \ +We want a four-bit output sum and a one-bit $c_"out"$. +#v(1fr) + +#problem() +Say that all basic logic gates need $1u$ of time to fully switch states. \ +#note([This is called _gate delay_], type: "Note") + +#v(2mm) + +How much time does a full adder need to fully switch states? \ +How about your circuit from @ripple-adder? + +#v(1fr) + +#problem("Bonus") +Design a faster solution to @ripple-adder. + +#v(1fr) diff --git a/src/Warm-Ups/Big-Tac-Toe/main.tex b/src/Warm-Ups/Big-Tac-Toe/main.tex deleted file mode 100755 index 8f735f5..0000000 --- a/src/Warm-Ups/Big-Tac-Toe/main.tex +++ /dev/null @@ -1,187 +0,0 @@ -\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/main.typ b/src/Warm-Ups/Big-Tac-Toe/main.typ new file mode 100644 index 0000000..c2e38fb --- /dev/null +++ b/src/Warm-Ups/Big-Tac-Toe/main.typ @@ -0,0 +1,90 @@ +#import "@local/handout:0.1.0": * +#import "@preview/cetz:0.3.1" + +#show: handout.with( + title: [Warm-Up: Big-Tac-Toe], + by: "Mark", +) + +#let extra_boards = false; + +#let ttt(s, p) = { + // s: scale, + // p: position + let x = p.at(0) * s + let y = p.at(1) * s + + cetz.draw.line((-1 * s + x, 3 * s + y), (-1 * s + x, -3 * s + y)) + cetz.draw.line((1 * s + x, 3 * s + y), (1 * s + x, -3 * s + y)) + cetz.draw.line((3 * s + x, -1 * s + y), (-3 * s + x, -1 * s + y)) + cetz.draw.line((3 * s + x, 1 * s + y), (-3 * s + x, 1 * s + y)) +} + +#let btt(s) = cetz.canvas({ + import cetz.draw: * + + set-style(stroke: (thickness: 0.5mm * s)) + + ttt(s, (-7, -7)) + ttt(s, (-7, 0)) + ttt(s, (-7, 7)) + ttt(s, (0, -7)) + ttt(s, (0, 0)) + ttt(s, (0, 7)) + ttt(s, (7, -7)) + ttt(s, (7, 0)) + ttt(s, (7, 7)) + + set-style(stroke: (thickness: 2mm * s)) + ttt(s * 3.5, (0, 0)) +}) + + +#problem() +Consider a 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. +- The first player to move may pick any small grid to start in. +- If a player is directed to a grid that is _full_, that player may go anywhere. \ + A sub-grid that is "won" but not full may still be played in. + +#v(2mm) + +The first player to complete a line of three "won" subgrids wins the game. + +#v(2mm) + +#problem() +Play a few rounds of this game with someone nearby. \ +Can either player force a win? + +#table( + stroke: none, + align: center, + columns: (1fr, 1fr), + btt(0.35), btt(0.35), +); + +#problem() +Modify the rules of this game to disallow play in won subgrids. \ +How does your strategy change? \ +#if extra_boards { note([Additional boards are available on the next page.]) } + +#v(1fr) + +#if extra_boards { + pagebreak() + + align( + center, + grid( + stroke: none, + align: center, + columns: (1fr, 1fr), + rows: (1fr, 1fr, 1fr), + btt(0.35), btt(0.35), + btt(0.35), btt(0.35), + btt(0.35), btt(0.35), + ), + ) +} diff --git a/src/Warm-Ups/Fuse Timers/main.tex b/src/Warm-Ups/Fuse Timers/main.tex deleted file mode 100755 index b0c5d1a..0000000 --- a/src/Warm-Ups/Fuse Timers/main.tex +++ /dev/null @@ -1,31 +0,0 @@ -\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/main.typ b/src/Warm-Ups/Fuse Timers/main.typ new file mode 100644 index 0000000..48cb0fa --- /dev/null +++ b/src/Warm-Ups/Fuse Timers/main.typ @@ -0,0 +1,15 @@ +#import "@local/handout:0.1.0": * + +#show: handout.with( + title: [Warm-Up: Fuse Timers], + by: "Mark", +) + +#problem() +Suppose we have two strings and a lighter. Each string takes exactly an hour to fully burn. \ +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. + +#v(2mm) + +How can we measure exactly 45 minutes using these two strings? diff --git a/src/Warm-Ups/Gallery/main.tex b/src/Warm-Ups/Gallery/main.tex deleted file mode 100755 index e4541ac..0000000 --- a/src/Warm-Ups/Gallery/main.tex +++ /dev/null @@ -1,121 +0,0 @@ -\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/main.typ b/src/Warm-Ups/Gallery/main.typ new file mode 100644 index 0000000..10027b8 --- /dev/null +++ b/src/Warm-Ups/Gallery/main.typ @@ -0,0 +1,103 @@ +#import "@local/handout:0.1.0": * + +#show: handout.with( + title: [Warm-Up: The Gallery], + by: "Mark", +) + +#let thisone = if_solutions( + text(fill: ored, [#sym.arrow.l.double.long `this one`]), +) + +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: +#v(2mm) +- Gardenias must be immediately before Katydid. +- Hibiscus must be somewhere before Katydid but cannot be the first photograph. +- Irises and Lotus must be next to one another. +- Magnolia must be one of the first three photographs. +- Fence must be either first or seventh. + + +#problem() +Which of the below could be a valid ordering? \ +#note([We denote each painting by the first letter of its title.], type: "Note") +- `FHGMKIL` +- `HMGKILF` +- `ILMHGKF` #thisone +- `LMIHGKF` +- `MFHGKLI` + +#v(1fr) + +#problem() +If Irises is immediately before Gardenias, which of the following could be true? +- Gardenias is fourth +- Hibiscus is fourth +- Irises is third +- Lotus is second +- Magnolia is third #thisone + +#v(1fr) + +#problem() +The ordering of the photographs is fully determined if... +- Gardenias is fourth +- Hibiscus is second +- Irises is second +- Lotus is first #thisone +- Magnolia is third + + +#v(1fr) +#pagebreak() + + + +#problem() +If Magnolia is second, what CANNOT be true? +- Hibiscus is third +- Hibiscus is fourth #thisone +- Hibiscus is fifth +- Gardenias is fourth +- Gardenias is sixth + + +#v(1fr) + +#problem() +Katydid cannot be in which position? +- Third #thisone +- Fourth +- Fifth +- Sixth +- Seventh + +#v(1fr) + +#problem() +If Gardenias is fourth, what must be true? +- Fence is first #thisone +- Hibiscus is third +- Irises is seventh +- Magnolia is first +- Magnolia is second + +#v(1fr) + +#problem() +Which one of the following, +if substituted for the second condition, +would have the same effect in determining the +arrangement of the photographs? + +- If Fence is seventh, Hibiscus is second +- Gardenias is somewhere after Hibiscus, and either Fence or Magnolia is first +- Hibiscus must be somewhere between the first and sixth photographs +- Unless Hibiscus is second, it must be somewhere between Magnolia and Gardenias \ + #if_solutions(text(fill: ored, [#sym.arrow.t.double `this one`])) +- Katydid is somewhere after Hibiscus, which must be after Fence. + +#v(1fr) diff --git a/src/Warm-Ups/Mario Kart/main.tex b/src/Warm-Ups/Mario Kart/main.tex deleted file mode 100755 index f5af8a0..0000000 --- a/src/Warm-Ups/Mario Kart/main.tex +++ /dev/null @@ -1,54 +0,0 @@ -\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/main.typ b/src/Warm-Ups/Mario Kart/main.typ new file mode 100644 index 0000000..2768cc8 --- /dev/null +++ b/src/Warm-Ups/Mario Kart/main.typ @@ -0,0 +1,35 @@ +#import "@local/handout:0.1.0": * + +#show: handout.with( + title: [Warm-Up: Mario Kart], + by: "Mark", +) + +#problem() +A standard Mario Kart cup consists of 12 players and four races. \ +Each race is scored as follows: +- 15 points are awarded for first place; +- 12 for second; +- and $(13 - #text("place"))$ otherwise. + +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. + +#v(2mm) + +An $n$-way tie occurs when the top $n$ players have the same score at the end of a round. \ +What is the largest possible $n$, and how is it achieved? + +#solution([ + A 12-way tie is impossible, since the total number of point is not divisible by 12. + + #v(2mm) + + A 11-way tie is possible, with a top score of 28: + - Four players finish $1^#text("st")$, $3^#text("ed")$, $11^#text("th")$, and $12^#text("th")$; + - Four players finish $2^#text("nd")$, $4^#text("th")$, $9^#text("th")$, and $10^#text("th")$; // spell:disable-line + - Two players finish fifth twice and seventh twice, + - One player finishes sixth in each race. + The final player always finishes eighth, with a non-tie score of 20. + +]) diff --git a/src/Warm-Ups/Odd Dice/main.tex b/src/Warm-Ups/Odd Dice/main.tex deleted file mode 100755 index 270936d..0000000 --- a/src/Warm-Ups/Odd Dice/main.tex +++ /dev/null @@ -1,132 +0,0 @@ -\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/main.typ b/src/Warm-Ups/Odd Dice/main.typ new file mode 100644 index 0000000..16197ec --- /dev/null +++ b/src/Warm-Ups/Odd Dice/main.typ @@ -0,0 +1,111 @@ +#import "@local/handout:0.1.0": * +#import "@preview/cetz:0.3.1" + + +#show: handout.with( + title: [Warm-Up: Odd Dice], + by: "Mark", +) + +#problem() +We say a set of dice ${A, B, C}$ is _nontransitive_ +if, on average, $A$ beats $B$, $B$ beats $C$, and $C$ beats $A$. +In other words, we get a counterintuitive "rock - paper - scissors" effect. + +#v(2mm) + +Create a set of nontransitive six-sided dice. \ +#hint([All sides should be numbered with positive integers less than 10.]) + +#solution([ + One possible set can be numbered as follows: + - Die $A$: $2, 2, 4, 4, 9, 9$ + - Die $B$: $1, 1, 6, 6, 8, 8$ + - Die $C$: $3, 3, 5, 5, 7, 7$ + + #v(2mm) + + Another solution is below: + - Die $A$: $3, 3, 3, 3, 3, 6$ + - Die $B$: $2, 2, 2, 5, 5, 5$ + - Die $C$: $1, 4, 4, 4, 4, 4$ + +]) + +#v(1fr) + +#problem() +Now, consider the set of six-sided dice below: +- Die $A$: $4, 4, 4, 4, 4, 9$ +- Die $B$: $3, 3, 3, 3, 8, 8$ +- Die $C$: $2, 2, 2, 7, 7, 7$ +- Die $D$: $1, 1, 6, 6, 6, 6$ +- Die $E$: $0, 5, 5, 5, 5, 5$ +On average, which die beats each of the others? Draw a diagram. + +#solution( + align( + center, + cetz.canvas({ + import cetz.draw: * + + let s = 0.8 // Scale + let t = 13pt * s // text size + let radius = 0.3 * s + + // Points + let a = (-2 * s, 0.2 * s) + let b = (0 * s, 2 * s) + let c = (2 * s, 0.2 * s) + let d = (1.2 * s, -2.1 * s) + let e = (-1.2 * s, -2.1 * s) + + set-style( + stroke: (thickness: 0.6mm * s), + mark: ( + end: ( + symbol: ">", + fill: black, + offset: radius + (0.025 * s), + width: 1.2mm * s, + length: 1.2mm * s, + ), + ), + ) + + line(a, b) + line(b, c) + line(c, d) + line(d, e) + line(e, a) + line(a, c) + line(b, d) + line(c, e) + line(d, a) + line(e, b) + + circle(a, radius: radius, fill: oblue, stroke: none) + circle(b, radius: radius, fill: oblue, stroke: none) + circle(c, radius: radius, fill: oblue, stroke: none) + circle(d, radius: radius, fill: oblue, stroke: none) + circle(e, radius: radius, fill: oblue, stroke: none) + + content(a, text(fill: white, size: t, [*A*])) + content(b, text(fill: white, size: t, [*B*])) + content(c, text(fill: white, size: t, [*C*])) + content(d, text(fill: white, size: t, [*D*])) + content(e, text(fill: white, size: t, [*E*])) + }), + ), +) + +#v(1fr) + +#problem() +Now, say we roll each die twice. What happens to the graph from the previous problem? + +#solution([ + The direction of each edge is reversed! +]) + +#v(1fr) diff --git a/src/Warm-Ups/Painting/main.tex b/src/Warm-Ups/Painting/main.tex deleted file mode 100755 index 93f0bd4..0000000 --- a/src/Warm-Ups/Painting/main.tex +++ /dev/null @@ -1,80 +0,0 @@ -\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/main.typ b/src/Warm-Ups/Painting/main.typ new file mode 100644 index 0000000..83461b1 --- /dev/null +++ b/src/Warm-Ups/Painting/main.typ @@ -0,0 +1,82 @@ +#import "@local/handout:0.1.0": * +#import "@preview/cetz:0.3.1" + +#show: handout.with( + title: [Warm-Up: What's an AST?], + by: "Mark", + subtitle: "Based on a true story.", +) + +#problem() +Say we have a painting on a string. \ +Hang the painting on two nails so that if either is removed, the painting falls. \ + +#v(2mm) +You may detach the string as you hang the painting, but it must be re-attached once you're done. \ +#hint[The solution to this problem isn't a "think outside the box" trick, it's a clever wrapping of the string.] + + +#v(2mm) + +#align( + center, + cetz.canvas({ + import cetz.draw: * + let s = 2.5 + + + line( + (0 * s, 1 * s), + (2 * s, 1 * s), + (2 * s, 0 * s), + (0 * s, 0 * s), + close: true, + stroke: (thickness: 0.8mm), + ) + + line( + (0.1 * s, 1 * s), + (0.5 * s, 1.5 * s), + (1.5 * s, 1.5 * s), + (1.9 * s, 1 * s), + stroke: (thickness: 0.5mm, dash: "dotted"), + ) + + circle((0.5 * s, 1.5 * s), radius: 0.04 * s, fill: black, stroke: none) + circle((1.5 * s, 1.5 * s), radius: 0.04 * s, fill: black, stroke: none) + + line( + (0.66 * s, 0.66 * s), + (0.66 * s, 0.35 * s), + (0.60 * s, 0.1 * s), + ) + + line( + (0.72 * s, 0.1 * s), + (0.66 * s, 0.35 * s), + ) + + line( + (0.66 * s, 0.575 * s), + (0.6 * s, 0.475 * s), + (0.525 * s, 0.575 * s), + ) + + line( + (0.66 * s, 0.575 * s), + (0.72 * s, 0.475 * s), + (0.795 * s, 0.575 * s), + ) + + circle((0.66 * s, 0.66 * s), radius: 0.07 * s, fill: white) + }), +) + +#solution([ + Say we have a left nail and a right nail. The path of the string is as follows: + - Start on the left + - Move over both nails, wrap right nail cw + - Wrap left nail ccw + - Wrap right nail ccw + - Exit downwards, in between both nails +]) diff --git a/src/Warm-Ups/Partition Products/main.tex b/src/Warm-Ups/Partition Products/main.tex deleted file mode 100755 index a440b7e..0000000 --- a/src/Warm-Ups/Partition Products/main.tex +++ /dev/null @@ -1,57 +0,0 @@ -\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/main.typ b/src/Warm-Ups/Partition Products/main.typ new file mode 100644 index 0000000..cd33c83 --- /dev/null +++ b/src/Warm-Ups/Partition Products/main.typ @@ -0,0 +1,41 @@ +#import "@local/handout:0.1.0": * + +#show: handout.with( + title: [Warm-Up: Partition Products], + by: "Mark", +) + +#problem() +Take any positive integer $n$. \ +Now, write it as sum of smaller positive integers: $n = a_1 + a_2 + ... a_k$ \ +Maximize the product $a_1 #sym.times a_2 #sym.times ... #sym.times a_k$ + + +#solution([ + *Interesting Solution:* + + Of course, all $a_i$ should be greater than $1$. \ + Also, all $a_i$ should be smaller than four, since $x <= x(x-2)$ if $x >= 4$. \ + Thus, we're left with sequences that only contain 2 and 3. \ + #note([Note that two twos are the same as one four, but we exclude fours for simplicity.]) + + #v(2mm) + + Finally, we see that $3^2 > 2^3$, so any three twos are better repackaged as two threes. \ + The best sequence $a_i$ thus consists of a maximal number of threes followed by 0, 1, or 2 twos. + + #v(8mm) + + *Calculus Solution:* + + First, solve this problem for equal, real $a_i$: + #v(2mm) + We know $n = product(a_i)$, thus $ln(n) = sum(ln(a_i))$. \ + If all $a_i$ are equal, we get $ln(n) = k #sym.times ln(n / k)$. \ + Derive wrt $k$ and set to zero to get $ln(n / k) = 1$ \ + So $k = n / e$ and $n / k = e #sym.approx 2.7$ + + #v(2mm) + + If we try to approximate this with integers, we get the same solution as above. +]) diff --git a/src/Warm-Ups/Passing Balls/main.tex b/src/Warm-Ups/Passing Balls/main.tex deleted file mode 100755 index 4a57dc1..0000000 --- a/src/Warm-Ups/Passing Balls/main.tex +++ /dev/null @@ -1,47 +0,0 @@ -\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/main.typ b/src/Warm-Ups/Passing Balls/main.typ new file mode 100644 index 0000000..b8420a8 --- /dev/null +++ b/src/Warm-Ups/Passing Balls/main.typ @@ -0,0 +1,192 @@ +#import "@local/handout:0.1.0": * +#import "@preview/cetz:0.3.1" + +#show: handout.with( + title: [Warm-Up: Passing Balls], + by: "Mark", +) + +#problem() +Twelve people are standing in a circle. Each is assigned a number between 1 and 12. \ +Participants numbered 1, 2, 3, and 4 hold red, green, yellow, and black balls, respectively. \ +Everyone else is empty-handed. + +#v(2mm) + +Each participant can pass their ball to any student that is exactly 5 positions away. \ +Balls cannot be passed to someone who has one in hand. + +#v(2mm) + +After a number of passes, the first four participants again hold all the balls. \ +Participant 1 has a black ball. Which balls are held by participants 2, 3, and 4? + +#solution([ + The graph of possible moves is isomorphic to a circle (since 5 and 12 are coprime), \ + so the order of the balls cannot be changed as they are passed around. + + #v(2mm) + + Therefore, the balls will stay in their initial (cyclic) order: + + #v(2mm) + + #{ + let s = 0.7 // scale + let t = 12pt * s // text size + let radius = 0.35 + + let pts = ( + (0 * s, 3 * s), + (1 * s, 2 * s), + (2 * s, 1 * s), + (3 * s, 0 * s), + (2 * s, -1 * s), + (1 * s, -2 * s), + (0 * s, -3 * s), + (-1 * s, -2 * s), + (-2 * s, -1 * s), + (-3 * s, 0 * s), + (-2 * s, 1 * s), + (-1 * s, 2 * s), + ) + + let pts_shuf = ( + (0 * s, 3 * s), // 1 + (1 * s, -2 * s), // 6 + (-2 * s, 1 * s), // 11 + (3 * s, 0 * s), // 4 + (-2 * s, -1 * s), // 9 + (1 * s, 2 * s), // 2 + (0 * s, -3 * s), // 7 + (-1 * s, 2 * s), // 12 + (2 * s, -1 * s), // 5 + (-3 * s, 0 * s), // 10 + (2 * s, 1 * s), // 3 + (-1 * s, -2 * s), // 8 + ) + + table( + stroke: none, + align: center, + columns: (1fr, 1fr, 1fr), + cetz.canvas({ + import cetz.draw: * + + set-style(stroke: (thickness: 0.4mm, paint: black)) + line(..pts_shuf, close: true) + + let i = 1 + for p in pts { + circle( + p, + radius: radius * s, + fill: if i == 1 { + ored + } else if i == 2 { + ogreen + } else if i == 3 { + oorange + } else if i == 4 { + oblue + } else { white }, + ) + + content( + p, + text( + fill: if i <= 4 { + white + } else { + black + }, + size: t, + [*#i*], + ), + ) + i = i + 1 + } + }), + cetz.canvas({ + import cetz.draw: * + + set-style(stroke: (thickness: 0.4mm, paint: black)) + line(..pts, close: true) + + let i = 1 + for p in pts { + let l = calc.rem(((i - 1) * 5), 12) + 1 + + + circle( + p, + radius: radius * s, + fill: if l == 1 { + ored + } else if l == 2 { + ogreen + } else if l == 3 { + oorange + } else if l == 4 { + oblue + } else { white }, + ) + + content( + p, + text( + fill: if l <= 4 { + white + } else { + black + }, + size: t, + [*#l*], + ), + ) + i = i + 1 + } + }), + cetz.canvas({ + import cetz.draw: * + + set-style(stroke: (thickness: 0.4mm, paint: black)) + line(..pts, close: true) + + let i = 1 + for p in pts { + let l = calc.rem(((i - 1) * 5), 12) + 1 + + + circle( + p, + radius: radius * s, + fill: if l == 1 { + oblue + } else if l == 2 { + oorange + } else if l == 3 { + ored + } else if l == 4 { + ogreen + } else { white }, + ) + + content( + p, + text( + fill: if l <= 4 { + white + } else { + black + }, + size: t, + [*#l*], + ), + ) + i = i + 1 + } + }), + ) + } +]) diff --git a/src/Warm-Ups/Passing Balls/pass-sol.png b/src/Warm-Ups/Passing Balls/pass-sol.png deleted file mode 100644 index b052142..0000000 Binary files a/src/Warm-Ups/Passing Balls/pass-sol.png and /dev/null differ diff --git a/src/Warm-Ups/Prime Factors/main.tex b/src/Warm-Ups/Prime Factors/main.tex deleted file mode 100755 index 4f5a400..0000000 --- a/src/Warm-Ups/Prime Factors/main.tex +++ /dev/null @@ -1,34 +0,0 @@ -\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/main.typ b/src/Warm-Ups/Prime Factors/main.typ new file mode 100644 index 0000000..1e81933 --- /dev/null +++ b/src/Warm-Ups/Prime Factors/main.typ @@ -0,0 +1,23 @@ +#import "@local/handout:0.1.0": * + +#show: handout.with( + title: [Warm-Up: Prime Factors], + by: "Mark", +) + +#problem() +What proportion of integers have $2$ as their smallest prime factor? +#solution([$1 div 2$]) +#v(1fr) + + +#problem() +What proportion of integers have $3$ as their second-smallest prime factor? +#solution([$1 div 6$]) +#v(1fr) + + +#problem() +What is the median second-smallest prime factor? +#solution([37]) +#v(1fr) diff --git a/src/Warm-Ups/Regex/main.tex b/src/Warm-Ups/Regex/main.tex deleted file mode 100644 index a8f48e7..0000000 --- a/src/Warm-Ups/Regex/main.tex +++ /dev/null @@ -1,153 +0,0 @@ -\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/main.typ b/src/Warm-Ups/Regex/main.typ new file mode 100644 index 0000000..47fa5d3 --- /dev/null +++ b/src/Warm-Ups/Regex/main.typ @@ -0,0 +1,135 @@ +#import "@local/handout:0.1.0": * + +#show: handout.with( + title: [The Regex Warm-Up], + by: "Mark", +) + + +Last time, we discussed Deterministic Finite Automata. One interesting application of these mathematical objects is found in computer science: Regular Expressions. \ +This is often abbreviated "regex," which is pronounced like "gif." + +#v(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. \ + +Often enough, a clever regex pattern can do the work of a few hundred lines of code. + +#v(2mm) + +Like the DFAs we've studied, a regex pattern _accepts_ or _rejects_ a string. However, we don't usually use this terminology with regex, and instead say that a string _matches_ or _doesn't match_ a pattern. + +#v(5mm) + +Regex strings consist of characters, quantifiers, sets, and groups. + +#v(5mm) + + + +*Quantifiers* \ +Quantifiers specify how many of a character to match. \ +There are four of these: `+`, `*`, `?`, and `{ }`. + +#v(4mm) + +`+` means "match one or more of the preceding token" \ +`*` means "match zero or more of the preceding token" + +For example, the pattern `ca+t` will match the following strings: +- `cat` +- `caat` +- `caaaaaaaat` +`ca+t` will *not* match the string `ct`. \ +The pattern `ca*t` will match all the strings above, including `ct`. + + +#v(4mm) + + +`?` means "match one or none of the preceding token" \ +The pattern `linea?r` will match only `linear` and `liner`. + +#v(4mm) + +Brackets `{min, max}` are the most flexible quantifier. \ +They specify exactly how many tokens to match: \ +`ab{2}a` will match only `abba`. \ +`ab{1,3}a` will match only `aba`, `abba`, and `abbba`. \ +`ab{2,}a` will match any `ab...ba` with at least two `b`s. // spell:disable-line + +#problem() +Write the patterns `a*` and `a+` using only `{ }`. +#v(1fr) + +#problem() +Draw a DFA equivalent to the regex pattern `01*0`. +#v(1fr) + +#pagebreak() + + + + + + +*Characters, Sets, and Groups* \ +In the previous section, we saw how we can specify characters literally: \ +`a+` means "one or more `a` characters" \ +There are, of course, other ways we can specify characters. + +#v(4mm) + +The first such way is the _set_, denoted `[ ]`. A set can pretend to be any character inside it. \ +For example, `m[aoy]th` will match `math`, `moth`, or `myth`. \ +`a[01]+b` will match `a0b`, `a111b`, `a1100110b`, and any other similar string. \ + +#v(4mm) + +We can negate a set with a `^`. \ +`[^abc]` will match any single character except `a`, `b`, or `c`, including symbols and spaces. + +#v(4mm) + +If we want to keep characters together, we can use the _group_, denoted `( )`. \ + +Groups work exactly as you'd expect, representing an atomic#footnote([In other words, "unbreakable"]) group of characters. \ +`a(01)+b` will match `a01b` and `a010101b`, but will *not* match `a0b`, `a1b`, or `a1100110b`. + +#problem() +You are now familiar with most of the tools regex has to offer. \ +Write patterns that match the following strings: + +- An ISO-8601 date, like `2022-10-29`. \ + #hint([Invalid dates like `2022-13-29` should also be matched.]) + +- An email address. \ + #hint([Don't forget about subdomains, like `math.ucla.edu`.]) + +- A UCLA room number, like `MS 5118` or `Kinsey 1220B`. + +- Any ISBN-10 of the form `0-316-00395-7`. \ + #hint([Remember that the check digit may be an `X`. Dashes are optional.]) + +- A word of even length. \ + #hint([ + The set `[A-z]` contains every english letter, capitalized and lowercase. \ + `[a-z]` will only match lowercase letters. + ]) + +- A word with exactly 3 vowels. \ + #hint([ + The special token `\w` will match any word character. \ + It is equivalent to `[A-z0-9_]`. `_` represents a literal underscore. + ]) + +- A word that has even length and exactly 3 vowels. + +- A sentence that does not start with a capital letter. +#v(1fr) + +#problem() +If you'd like to know more, check out `https://regexr.com`. +It offers an interactive regex prompt, +as well as a cheatsheet that explains every other regex token there is. \ +You can find a nice set of challenges at `https://alf.nu/RegexGolf`. diff --git a/src/Warm-Ups/Sysadmin/main.tex b/src/Warm-Ups/Sysadmin/main.tex deleted file mode 100755 index 850ff53..0000000 --- a/src/Warm-Ups/Sysadmin/main.tex +++ /dev/null @@ -1,89 +0,0 @@ -\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/main.typ b/src/Warm-Ups/Sysadmin/main.typ new file mode 100644 index 0000000..0ba4726 --- /dev/null +++ b/src/Warm-Ups/Sysadmin/main.typ @@ -0,0 +1,35 @@ +#import "@local/handout:0.1.0": * + +#show: handout.with( + title: [The Sysadmin's Warm-Up], + by: "Mark", +) + +Most of you have seen a hard drive. \ +Many have touched one, and a lucky few have taken one apart. \ +These devices have two interesting properties: +- They hold valuable data +- They inevitably fail + +Needless to say, this is a problem. \ +We would like to design a system that tolerates hard drive failures without data loss. + +#definition() +You can think of a hard drive as a long string of bits. \ +Assume all hard drives in the following problems have the same size. \ +If a hard drive "fails", all data on it is instantly lost. + +#problem() +Suppose we have two hard drives. How can we arrange our data so that... +- We get 1 TiB of usable storage +- We lose no data if any one drive fails + +#v(1fr) + +#problem() +Suppose we have three hard drives. How can we arrange our data so that... +- We get 2 TiB of usable storage +- We lose no data if any one drive fails + +#v(1fr) + diff --git a/src/Warm-Ups/Travellers/main.tex b/src/Warm-Ups/Travellers/main.tex deleted file mode 100755 index cc38713..0000000 --- a/src/Warm-Ups/Travellers/main.tex +++ /dev/null @@ -1,30 +0,0 @@ -\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/main.typ b/src/Warm-Ups/Travellers/main.typ new file mode 100644 index 0000000..8421898 --- /dev/null +++ b/src/Warm-Ups/Travellers/main.typ @@ -0,0 +1,20 @@ +#import "@local/handout:0.1.0": * + +#show: handout.with( + title: [Warm-Up: Travellers], + by: "Mark", +) + +#problem() +Four travellers are on a plane, each moving along a straight line at an arbitrary constant speed. \ +No two of their paths are parallel, and no three intersect at the same point. \ +We know that traveller A has met travelers B, C, and D, \ +and that traveller B has met C and D (and A). Show that C and D must also have met. + +#solution([ + When a body travels at a constant speed, its graph with respect to time is a straight line. \ + So, we add time axis in the third dimension, perpendicular to our plane. \ + 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. +]) diff --git a/src/Warm-Ups/What's an AST/main.tex b/src/Warm-Ups/What's an AST/main.tex deleted file mode 100755 index 39dd677..0000000 --- a/src/Warm-Ups/What's an AST/main.tex +++ /dev/null @@ -1,43 +0,0 @@ -\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/main.typ b/src/Warm-Ups/What's an AST/main.typ new file mode 100644 index 0000000..6c32b92 --- /dev/null +++ b/src/Warm-Ups/What's an AST/main.typ @@ -0,0 +1,74 @@ +#import "@local/handout:0.1.0": * +#import "@preview/cetz:0.3.1" + +#show: handout.with( + title: [Warm-Up: What's an AST?], + by: "Mark", + subtitle: "Based on a true story.", +) + +#problem() +Say we have a valid string of simple arithmetic that contains \ +no unary operators (like $3!$ or $-4$) and no parenthesis: + +#v(2mm) +$ + 3 + 9 times 8 div 5 and 6 +$ +#v(2mm) + +You may assume that all numbers and operators in this string consist of exactly one character. \ + +Devise an algorithm that turns such strings into a tree (as shown below), \ +respecting the order of operations $[and, times, div, +, -]$. + +#v(2mm) + +#align( + center, + cetz.canvas({ + import cetz.draw: * + + // spell:off + content((0, 0), $+$, name: "r") + content((-0.5, -1), $3$, name: "a") + content((0.5, -1), $div$, name: "b") + content((-0.3, -2), $times$, name: "ba") + content((1.3, -2), $and$, name: "bb") + content((-0.8, -3), $9$, name: "baa") + content((0.2, -3), $8$, name: "bab") + content((0.8, -3), $5$, name: "bba") + content((1.8, -3), $6$, name: "bbb") + // spell:on + + // Zero-sized arrows are a hack for offset. + set-style( + stroke: (thickness: 0.3mm), + mark: ( + start: ( + symbol: "|", + offset: 0.25, + width: 0mm, + length: 0mm, + ), + end: ( + symbol: "|", + offset: 0.25, + width: 0mm, + length: 0mm, + ), + ), + ) + + // spell:off + line("r", "a") + line("r", "b") + line("b", "ba") + line("b", "bb") + line("ba", "baa") + line("ba", "bab") + line("bb", "bba") + line("bb", "bbb") + // spell:on + }), +) diff --git a/src/Warm-Ups/Wild Tic-Tac-Toe/main.tex b/src/Warm-Ups/Wild Tic-Tac-Toe/main.tex deleted file mode 100755 index b006ae0..0000000 --- a/src/Warm-Ups/Wild Tic-Tac-Toe/main.tex +++ /dev/null @@ -1,66 +0,0 @@ -\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/main.typ b/src/Warm-Ups/Wild Tic-Tac-Toe/main.typ new file mode 100644 index 0000000..16dbc0d --- /dev/null +++ b/src/Warm-Ups/Wild Tic-Tac-Toe/main.typ @@ -0,0 +1,47 @@ +#import "@local/handout:0.1.0": * +#import "@preview/cetz:0.3.1" + +#show: handout.with( + title: [Warm-Up: Wild Tic-Tac-Toe], + by: "Mark", +) + +#let ttt = align( + center, + cetz.canvas({ + import cetz.draw: * + let s = 0.7 // scale + + set-style(stroke: (thickness: 0.5mm * s)) + line((-1 * s, 3 * s), (-1 * s, -3 * s)) + line((1 * s, 3 * s), (1 * s, -3 * s)) + line((3 * s, -1 * s), (-3 * s, -1 * s)) + line((3 * s, 1 * s), (-3 * s, 1 * s)) + }), +) + + +#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. +#v(4mm) + +#table( + stroke: none, + align: center, + columns: (1fr, 1fr, 1fr), + ttt, ttt, ttt, +); +#v(1fr) + +#problem() +Now, say the first player to complete a row loses. Who has a winning strategy now? +#v(4mm) + +#table( + stroke: none, + align: center, + columns: (1fr, 1fr, 1fr), + ttt, ttt, ttt, +); +#v(1fr) diff --git a/src/Warm-Ups/Zeno's Furniture/main.tex b/src/Warm-Ups/Zeno's Furniture/main.tex deleted file mode 100755 index 5b696d4..0000000 --- a/src/Warm-Ups/Zeno's Furniture/main.tex +++ /dev/null @@ -1,150 +0,0 @@ -\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/main.typ b/src/Warm-Ups/Zeno's Furniture/main.typ new file mode 100644 index 0000000..3d47d2b --- /dev/null +++ b/src/Warm-Ups/Zeno's Furniture/main.typ @@ -0,0 +1,125 @@ +#import "@local/handout:0.1.0": * + +#show: handout.with( + title: [Warm-Up: Zeno's Furniture], + by: "Mark", +) + +#let thisone = if_solutions( + text(fill: ored, [#sym.arrow.l.double.long `this one`]), +) + + +Zeno's Furniture sells exactly five types of furniture: \ +Footstools, Hutches, Sideboards, Tables, and Vanities. + +#v(3mm) + +Each can be made of exactly one kind of wood: \ +Maple, Oak, Pine, or Rosewood + +#v(3mm) + +Irene buys four items, each of a different type. \ +The following conditions govern Irene's purchases: +- Any vanity she buys is Maple. +- Any rosewood item she buys is a sideboard. +- If she buys a vanity, she does not buy a footstool. +- If she buys a footstool, she also buys a table made of the same material. +- Irene does not buy an oak table. +- Exactly two of the items she buys are made of the same kind of wood. + + + +#v(5mm) + + +#problem() +Which one of the following could be an accurate +list of the items Irene buys? \ +- maple footstool, maple hutch, rosewood sideboard, maple table +- oak hutch, rosewood sideboard, pine table, oak vanity +- rosewood hutch, maple sideboard, oak table, maple vanity +- pine footstool, rosewood sideboard, pine table, maple vanity +- maple footstool, pine hutch, oak sideboard, maple table #thisone + +#v(1fr) + + +#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? +- a rosewood sideboard and an oak footstool +- an oak hutch and a pine sideboard +- an oak hutch and a maple table #thisone +- a maple sideboard and a maple vanity +- a maple hutch and a maple table + +#v(1fr) +#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? +- maple, oak +- maple, pine #thisone +- maple, rosewood +- maple, oak, pine +- maple, oak, pine, rosewood + +#v(1fr) + + +#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? +- footstool, hutch, sideboard, table, vanity +- footstool, hutch, sideboard, table #thisone +- footstool, hutch, sideboard +- footstool, hutch +- footstool + +#v(1fr) + +#problem() +Which one of the following cannot be the two items Irene +buys that are made of the same wood as each other? +- footstool, hutch #thisone +- hutch, sideboard +- hutch, table +- sideboard, vanity +- table, vanity + +#v(1fr) +#pagebreak() + + + + +#problem() +If Irene does not buy an item made of maple, then each of the +following must be true except... +- Irene buys a footstool +- Irene buys a pine hutch #thisone +- Irene buys a rosewood sideboard +- Irene buys exactly one item made of oak +- Irene buys exactly two items made of pine + +#v(1fr) + + +#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? +- Irene buys an oak footstool. +- Irene buys a hutch and a table made of the same wood. +- Irene buys a vanity, but she does not buy an oak table. +- Irene buys a maple table and an oak hutch. +- Irene buys a rosewood sideboard and exactly two items made of pine. #thisone + +#v(1fr) diff --git a/src/Warm-Ups/fmod/main.tex b/src/Warm-Ups/fmod/main.tex deleted file mode 100755 index 693d94e..0000000 --- a/src/Warm-Ups/fmod/main.tex +++ /dev/null @@ -1,22 +0,0 @@ -\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/main.typ b/src/Warm-Ups/fmod/main.typ new file mode 100644 index 0000000..2e973e1 --- /dev/null +++ b/src/Warm-Ups/fmod/main.typ @@ -0,0 +1,10 @@ +#import "@local/handout:0.1.0": * + +#show: handout.with( + title: [Warm-Up: `fmod`], + by: "Mark", +) + +#problem() +I'm sure you're all familiar with how `mod(a, b)` and `remainder(a, b)` \ work when `a` and `b` are integers. +Devise an equivalent for floats (i.e, real numbers).