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