98 lines
2.1 KiB
Typst
98 lines
2.1 KiB
Typst
#import "@local/handout:0.1.0": *
|
|
#import "@preview/cetz:0.3.1"
|
|
|
|
|
|
#show: doc => handout(
|
|
doc,
|
|
quarter: link(
|
|
"https://betalupi.com/handouts",
|
|
"betalupi.com/handouts",
|
|
),
|
|
|
|
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),
|
|
),
|
|
)
|
|
}
|