iniciar-programa
   define-nueva-instruccion derecha como inicio
      gira-izquierda;
      gira-izquierda;
      gira-izquierda;
   fin;
   define-nueva-instruccion regresa como inicio
      gira-izquierda;
      gira-izquierda;
   fin;
   define-nueva-instruccion acomoda como inicio
      si junto-a-zumbador entonces inicio
         coge-zumbador;
         si junto-a-zumbador entonces inicio
            coge-zumbador;
            mientras frente-libre hacer
               avanza;
            regresa;
            si junto-a-zumbador entonces inicio
               coge-zumbador;
               si junto-a-zumbador entonces inicio
                  repetir 3 veces
                     deja-zumbador;
                mientras frente-libre hacer
                   avanza;
                regresa;
               fin
               sino inicio
                  deja-zumbador;
                  deja-zumbador;
                  mientras frente-libre hacer
                     avanza;
                  deja-zumbador;
                  regresa;
               fin;
            fin
            sino inicio
               deja-zumbador;
               deja-zumbador;
               mientras frente-libre hacer
                  avanza;
               regresa;
            fin;
         fin
         sino inicio
            deja-zumbador;
            mientras frente-libre hacer
               avanza;
            regresa;
            si junto-a-zumbador entonces inicio
               coge-zumbador;
               si junto-a-zumbador entonces inicio
                  deja-zumbador;
                  mientras frente-libre hacer
                     avanza;
                  regresa;
               fin
               sino inicio
                  mientras frente-libre hacer
                     avanza;
                  regresa;
                  deja-zumbador;
               fin;
            fin
            sino inicio
               mientras frente-libre hacer
                  avanza;
               regresa;
            fin;
         fin;
      fin;
   fin;
   define-nueva-instruccion checa como inicio
      mientras frente-libre hacer inicio
         si junto-a-zumbador entonces inicio
            coge-zumbador;
            si junto-a-zumbador entonces inicio
               coge-zumbador;
               mientras frente-libre hacer
                  avanza;
               deja-zumbador;
               deja-zumbador;
               regresa;
               mientras frente-libre hacer
                  avanza;
               regresa;
               avanza;
            fin
            sino inicio
               regresa;
               mientras frente-libre hacer
                  avanza;
               deja-zumbador;
               regresa;
               avanza;
            fin;
      fin;
      si no-junto-a-zumbador entonces
         avanza;
   fin;
   fin;
   define-nueva-instruccion colocalos(x) como inicio
      si junto-a-zumbador entonces inicio
         coge-zumbador;
      si orientado-al-oeste entonces
         coge-zumbador;
         colocalos(sucede(x));
      fin;
      si orientado-al-este o orientado-al-oeste entonces inicio
          repetir x veces inicio
             deja-zumbador;
             si orientado-al-oeste entonces inicio
                deja-zumbador;
             fin;
             avanza;
          fin;
          derecha;
      fin;
   fin;
    inicia-ejecucion
       si orientado-al-norte entonces
          gira-izquierda;
       si orientado-al-este entonces
          regresa;
       si orientado-al-sur entonces
          derecha;
       mientras frente-libre hacer
          avanza;
       regresa;
       si no-junto-a-zumbador entonces inicio
          mientras frente-libre hacer
             avanza;
          regresa;
            si junto-a-zumbador entonces inicio
               coge-zumbador;
               si junto-a-zumbador entonces inicio
                  deja-zumbador;
               mientras frente-libre hacer
                  avanza;
               regresa;
               fin
               sino inicio
                  mientras frente-libre hacer
                     avanza;
                  regresa;
                  deja-zumbador;
               fin;
            fin
            sino   inicio
               mientras frente-libre hacer
                  avanza;
               regresa;
             fin;

       fin;

       si junto-a-zumbador entonces
          acomoda;
       avanza;
       checa;

       regresa;
       si junto-a-zumbador entonces
          colocalos(0)
       sino derecha;
       si frente-bloqueado y izquierda-libre entonces inicio
       si orientado-al-norte entonces
          gira-izquierda;
       si orientado-al-este entonces
          regresa;
       si orientado-al-sur entonces
          derecha;
       mientras frente-libre hacer
          avanza;
       regresa;
       si junto-a-zumbador entonces
          colocalos(0);
       fin;
        apagate;
    termina-ejecucion
finalizar-programa
