beginning_of_program define_new_instruction turnright as iterate 3 times turnleft; define_new_instruction checar as { if front_is_clear then move; else busca_puerta; } define_new_instruction busca_puerta as { { while right_is_blocked do if front_is_clear then move; else turnleft; } salte; } define_new_instruction salte as { turnright; move; } define_new_instruction baila as { if left_is_blocked then { iterate 2 times turnleft; busca_puerta; } if right_is_blocked then { busca_puerta; turnright; } { iterate 3 times checar; } move; turnright; move; baila; } beginning_of_execution baila; turnoff; end_of_execution end_of_program