class program { define half-turn() { turnleft(); turnleft(); } define turnright() { iterate(3) { turnleft(); } } define go-back() { half-turn(); move(); } define goto-corner() { while (notFacingSouth) { turnleft(); } while (frontIsClear) { move(); } turnright(); while (frontIsClear) { move(); } } define goto-start() { goto-corner(); turnright(); move(); turnright(); move(); } define copy-pile(dist) { if (nextToABeeper) { pickbeeper(); copy-pile(dist); putbeeper(); go-back(); iterate (pred(dist)) { move(); } putbeeper(); go-back(); iterate (pred(dist)) { move(); } } else { move(); iterate (pred(dist)) { move(); } } } define fibonacci() { while (frontIsClear) { copy-pile(1); go-back(); move(); half-turn(); copy-pile(2); } } program() { goto-start(); fibonacci(); turnoff(); } }