iniciar-programa
 define-nueva-instruccion norte como mientras no orientado-al-norte hacer gira-izquierda;
 define-nueva-instruccion sur como mientras no orientado-al-sur hacer gira-izquierda;
 define-nueva-instruccion este como mientras no orientado-al-este hacer gira-izquierda;
 define-nueva-instruccion oeste como mientras no orientado-al-oeste hacer gira-izquierda;

define-nueva-instruccion dejar como
inicio
   sur;
   mientras frente-libre hacer avanza;
   oeste;
   mientras frente-libre hacer avanza;
   mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
fin;

define-nueva-instruccion cactus como
    inicio
     mientras frente-libre y no junto-a-zumbador hacer
       avanza;
       norte;
       si frente-bloqueado entonces dejar;
      si junto-a-zumbador entonces
           inicio

              si frente-libre entonces avanza;
              si no junto-a-zumbador entonces dejar;
              si frente-bloqueado y izquierda-bloqueada entonces apagate;
              gira-izquierda;
              si frente-libre entonces avanza;
              si no junto-a-zumbador entonces
              inicio
                 repetir 2 veces gira-izquierda;
                 si frente-libre entonces avanza;
                 si frente-libre entonces avanza;
                 si no junto-a-zumbador entonces repetir 2 veces gira-izquierda;
                 si no junto-a-zumbador entonces cactus;

              fin;
           fin;
    fin;
    define-nueva-instruccion cortar como
        inicio
           mientras junto-a-zumbador hacer
           inicio
              coge-zumbador;
              si no junto-a-zumbador y frente-libre entonces avanza;
              mientras frente-bloqueado y junto-a-zumbador  hacer
                inicio
                   si frente-bloqueado entonces
                   repetir 3 veces gira-izquierda;
                   si orientado-al-norte  y no junto-a-zumbador entonces avanza;
                fin;
              si no junto-a-zumbador entonces
              inicio
              repetir 2 veces gira-izquierda;
              si no junto-a-zumbador y frente-libre entonces avanza;
              fin;
              si no junto-a-zumbador entonces
              inicio
                           si no junto-a-zumbador y orientado-al-este entonces
                  gira-izquierda;
                  si no junto-a-zumbador y frente-libre  y orientado-al-norte entonces avanza;
                  si no junto-a-zumbador y orientado-al-oeste entonces
                  repetir 3 veces gira-izquierda;
                  si no-junto-a-zumbador y frente-libre y orientado-al-norte entonces avanza;
              fin;

           fin;
        fin;
        define-nueva-instruccion ira11 como
            inicio
              oeste;
               mientras frente-libre hacer avanza;
                 sur;

               mientras frente-libre hacer avanza;

               este;

            fin;
    inicia-ejecucion
        este;
        mientras no junto-a-zumbador hacer
        inicio
            cactus;
            mientras junto-a-zumbador hacer
            cortar;

            ira11;
        fin;
        apagate;
    termina-ejecucion
finalizar-programa
