Dawn and the train are both breaking  when Ethic and Hedge arrive in the woods. The adventurers  have recovered the first artifact— the Node of Power— and have come to the 198forest  in search of the second. Here they’re welcomed  by the director of the colony, Octavia. She established this treehouse sanctuary after the robots freed everyone  from having to work. It was meant to be a haven  where people could follow their passions, take up crafts, and find fulfillment. Which they did… at first. Some years ago everyone forgot the point. They abandoned arts and crafts and instead just painted and exhibited  pictures of themselves over, and over, and over. The location of the second artifact  is no secret; it’s in a tower,  guarded by a garrison of bots, a bottomless ravine,  and who knows what other traps. As soon as the tower  went up with the node inside, human communication  across the land went dark. Octavia’s been after it for years, but try as she might,  the defenses thwart her. In order to even get to the tower,  the team will need a distraction. Octavia has an idea: stir up the people  through some well-intentioned vandalism. The residents’ paintings are all squares  that come in different sizes, all an odd number of pixels across. Helper-bots  pick up the finished portraits and hang them in public places  for everyone to admire. There’s a slim margin of time  when Hedge can access the paintings. If he were to deface each one with an X, the people would blame the helper-bots, creating just the distraction  the team needs. If only it were so easy. Hedge can’t just paint an X— his painting processor  requires very specific instructions. Treating the paintings as square grids, he can fill in one pixel,  or little square, at a time. He can move forwards  and make 90 degree turns over the canvas, but can’t move diagonally. How does Ethic program Hedge  to paint an X over each portrait? Pause now to figure it out for yourself. Here’s a hint. Try drawing a square grid like this, and simulating Hedge’s path over it. What patterns can you find to guide him? Pause now to figure it out for yourself. The challenge here  is to craft a set of instructions that will work for any square grid. Fortunately,  one of the strengths of programming is the flexibility  to solve not just one problem, but a whole class of them all at once. It often helps to start with one case,  and work towards the general. Let’s say we had this square. Hedge can measure the length of its sides  and store that number as a variable. Now, what we need is a plan  for how Hedge will paint an X, pixel by pixel. There’s more than one right answer  for how to do this; let’s look at two. First, what if Hedge went row by row,  like a typewriter? If it’s a 9 pixel by 9 pixel painting, in the first row he’d paint,  skip 7, and then paint again. In the second row he’d skip the first,  paint, skip 5, and paint. And so on. The pattern here is that for each row  the pixels skipped at the beginning go up by one, and the pixels skipped in the middle  go down by 2. Things get more complicated  when Hedge reaches the center. Here there’s a row  with just one pixel painted. Then the whole thing reverses— the number of pixels skipped  goes down by one each time on the left, and up by two each time in the middle. Instructing Hedge to do this  with a series of loops will work and is a perfectly fine solution. The main drawback is that  this requires quite a bit of logic— knowing what to do in the middle,  when to reverse the process, and exactly how to reverse it. So how might we approach this so that the logic remains consistent  from start to finish? The key insight is to look at a grid  as a series of concentric squares. Each square follows the same pattern— painted pixels in the corners,  and unaltered pixels in between. So if we can figure out a way  to paint one nested square, transition to the next, and repeat,  we can paint them all. Painting the outermost one is easy. Start in a corner and paint that pixel. If we call the length of the painting n, fly forward n minus 1 spaces. Paint another pixel, and turn right. Now do the whole thing again… and again. Now move forward one less space,  turn right, fly forward once, and Hedge will be  in the next concentric square and ready to repeat the whole process. Each square is n minus 2 pixels smaller  than the last in length and width, and we can follow this spiral pattern  all the way to the center with a loop and a variable  that tracks how far Hedge should fly. Is one of these methods  better than the other? It really depends on what you value. The strength of the spiral  is the simplicity of finding a pattern and reusing the same logic  from start to finish. The advantage of the typewriter approach is that it’s a more generalized solution, meaning it can be adapted  much more simply to fill in any pattern. For Ethic’s sake,  either will do just fine. So here’s what happens. Hedge rapidly defaces  all of the portraits. And within moments cries of anguish  break out all over the forest. The garrison guarding the tower  abandon their posts to calm the agitated people, and Ethic, Hedge,  and Octavia slip through— and nearly slip  into the depths of the gorge standing between them and the tower.