Files
handouts/src/Warm-Ups/Painting/main.typ
2025-01-24 22:28:53 -08:00

83 lines
1.8 KiB
Typst

#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
])