This was was posed as the the first homework assignment in my first undergrad CS class (15 years ago). I don&#x27;t think a single person managed to do it.<p>It&#x27;s a classic example of a problem that you think is appropriate to throw at new programmers but find out it goes terribly wrong because the hard part is designing a suitable state machine first. If you just start coding without a full model that covers all the edge cases, it quickly degenerates to a mess of ad-hoc heuristics and spaghetti.