class program { define half-turn() { turnleft(); turnleft(); } define turnright() { iterate(3) { turnleft(); } } define y-position() { if (nextToABeeper) { pickbeeper(); y-position(); move(); } } define put-beeper-line(m) { while (frontIsClear) { iterate (m) { if (frontIsClear) { move(); } else { turnoff(); } putbeeper(); } turnright(); if (frontIsClear) { move(); } else { turnoff(); } turnleft(); } } define draw-line(m) { if (nextToABeeper) { pickbeeper(); draw-line(succ(m)); } else { half-turn(); move(); turnright(); pickbeeper(); y-position(); put-beeper-line(m); } } program() { turnright(); move(); draw-line(0); turnoff(); } }