beginning_of_program define_new_instruction turnright as {turnleft;turnleft;turnleft;} define_new_instruction busca_pared as {while front_is_clear do baila; turnleft;} define_new_instruction busca_puerta as {while right_is_blocked do if front_is_clear then move; else turnleft;} define_new_instruction salte as {pasoizquierda; turnleft; if left_is_blocked then {turnright; pasoderecha;} else {turnright; move;} if right_is_blocked then {turnright; pasoizquierda;} else {turnleft; move;} define_new_instruction pasoderecha as {turnright; move;turnleft;} define_new_instruction pasoizquierda as {turnleft; move; turnright;} define_new_instruction baila as {pasoderecha; if front_is_clear then {pasoizquierda; move;}} define_new_instruction mediavuelta as {turnright; turnright;} beginning_of_execution if right_is_clear then busca_pared; busca_puerta; salte; turnoff; end_of_execution end_of_program