class program { define halfturn() { turnleft(); turnleft(); } define turnright() { iterate( 3 ) turnleft(); } define buscaVuelta() { turnleft(); move(); while( notNextToABeeper && frontIsClear ) move(); halfturn(); } define regresa() { move(); while( notNextToABeeper ) move(); } define colocaEspiral() { while( anyBeepersInBeeperBag ) { buscaVuelta(); if( notNextToABeeper ) { regresa(); turnleft(); move(); putbeeper(); turnleft(); move(); if( anyBeepersInBeeperBag ) putbeeper(); } else { regresa(); turnleft(); move(); putbeeper(); } } } program() { if( anyBeepersInBeeperBag ) putbeeper(); colocaEspiral(); turnoff(); } }