80 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Typst
		
	
	
	
	
	
			
		
		
	
	
			80 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Typst
		
	
	
	
	
	
| #import "@local/handout:0.1.0": *
 | |
| #import "@preview/cetz:0.4.2"
 | |
| 
 | |
| #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
 | |
| ])
 |