iniciar-programa
 define-nueva-instruccion esquina como
    inicio
       mientras no orientado-al-oeste hacer
          gira-izquierda;
       mientras frente-libre hacer
          avanza;
       gira-izquierda;
       mientras frente-libre hacer
          avanza;
       gira-izquierda;
    fin;
   define-nueva-instruccion gira(n) como
    inicio
       repetir n veces
          gira-izquierda;
    fin;
    define-nueva-instruccion sube como
    inicio
       gira(2);
       mientras frente-libre hacer
          avanza;
       gira(3);
       si frente-libre entonces
       inicio
         avanza;
         gira(3);
       fin
       sino
       inicio
          esquina;
          gira(1);
       fin;
    fin;
     define-nueva-instruccion busca3 como
    inicio
       mientras orientado-al-este o orientado-al-oeste hacer
       inicio
          mientras frente-libre y no-junto-a-zumbador hacer
             avanza;
          mientras junto-a-zumbador hacer
             coge-zumbador;
          si frente-bloqueado entonces
             sube;
       fin;
      gira(3);
      mientras algun-zumbador-en-la-mochila hacer
      inicio
          deja-zumbador;
          avanza;
          deja-zumbador;
          deja-zumbador;
          gira(2);
          avanza;
          gira(2);
       fin;
    fin;
     define-nueva-instruccion busca2 como
    inicio
       mientras orientado-al-este o orientado-al-oeste hacer
       inicio
          mientras frente-libre y no-junto-a-zumbador hacer
             avanza;
          si junto-a-zumbador y frente-bloqueado entonces
          inicio
             coge-zumbador;
             coge-zumbador;
             si junto-a-zumbador entonces
             inicio
                deja-zumbador;
                deja-zumbador;
             fin;
             sube;
          fin
          sino
          si junto-a-zumbador entonces
          inicio
             coge-zumbador;
             coge-zumbador;
             si junto-a-zumbador entonces
             inicio
                deja-zumbador;
                deja-zumbador;
              fin;
              avanza;
          fin
          sino
             sube;
       fin;
        si orientado-al-norte entonces
       inicio
          gira(3);
          avanza;
          gira(3);
        mientras algun-zumbador-en-la-mochila hacer
             deja-zumbador;
        fin;
    fin;
    define-nueva-instruccion busca1 como
    inicio
       mientras orientado-al-este o orientado-al-oeste hacer
       inicio
          mientras frente-libre y no-junto-a-zumbador hacer
             avanza;
          si junto-a-zumbador y frente-bloqueado entonces
          inicio
             coge-zumbador;
             si junto-a-zumbador entonces
                deja-zumbador;
             sube;
          fin
          sino
          si junto-a-zumbador entonces
          inicio
              coge-zumbador;
               si junto-a-zumbador entonces
                   deja-zumbador;
              avanza;
          fin
          sino
             sube;
       fin;
       mientras algun-zumbador-en-la-mochila hacer
             deja-zumbador;
    fin;
    inicia-ejecucion
       esquina;
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          si junto-a-zumbador entonces
          inicio
             coge-zumbador;
          fin
          sino
             deja-zumbador;
       fin;
       avanza;
       si junto-a-zumbador entonces
       inicio
          coge-zumbador;
          si junto-a-zumbador entonces
          inicio
             coge-zumbador;
             si junto-a-zumbador entonces
             inicio
                gira(2);
                avanza;
                deja-zumbador;
                gira(2);
                avanza;
             fin;
          fin
          sino
          inicio
             gira(2);
             avanza;
             deja-zumbador;
             gira(2);
             avanza;
          fin;
       fin;
       mientras algun-zumbador-en-la-mochila hacer
         deja-zumbador;
       avanza;
       busca1;
       gira(3);
       avanza;
       avanza;
       busca2;
       gira(1);
       avanza;
       busca3;
       gira(1);
       mientras junto-a-zumbador hacer
          coge-zumbador;
       mientras algun-zumbador-en-la-mochila hacer
       inicio
          deja-zumbador;
          si frente-libre entonces
             avanza;
       fin;
       gira(2);
       mientras frente-libre hacer
          avanza;
       gira(1);
       avanza;
       gira(1);
        mientras junto-a-zumbador hacer
          coge-zumbador;
       mientras algun-zumbador-en-la-mochila hacer
       inicio
          deja-zumbador;
          deja-zumbador;
          si frente-libre entonces
             avanza;
       fin;
     apagate;
    termina-ejecucion
finalizar-programa
