Overall things went well. I have a few glitches when the magnets interact from the sides, but for the most part everything seems to be working as expected. The approach I took was to tackle the geometry first. I wanted to get all the rectangles placed and colored in the right way before I would handle any of the interaction logic. This is where I hit m first snag. I had some trouble placing the positive and minus signs correctly. This had to do with the order I was scaling in. After the geometry was good to go, I used the example pseudo code provided to implement the magnet interactions.
Here are some examples: