iniciar-programa
   define-nueva-instruccion regresa como inicio
      gira-izquierda;
      gira-izquierda;
   fin;
   define-nueva-instruccion derecha como inicio
      gira-izquierda;
      gira-izquierda;
      gira-izquierda;
   fin;

   define-nueva-instruccion cuenta(x) como inicio
      si junto-a-zumbador entonces inicio
         coge-zumbador;
         cuenta(sucede(x));
      fin
      sino inicio
         mientras frente-libre hacer inicio
            si junto-a-zumbador entonces inicio
            repetir x veces inicio
               si junto-a-zumbador entonces inicio
                  coge-zumbador;
                  derecha;
                  avanza;
                  deja-zumbador;
                  regresa;
                  avanza;
                  derecha;
               fin
               sino inicio
                  si orientado-al-oeste entonces
                     derecha;
               fin;
            fin;
            si junto-a-zumbador o orientado-al-norte entonces  inicio
               si orientado-al-oeste entonces
                  derecha;
               avanza;
               mientras junto-a-zumbador hacer inicio
                  coge-zumbador;
                  regresa;
                  avanza;
                  deja-zumbador;
                  regresa;
                  avanza;
               fin;
               regresa;
               avanza;
               derecha;
               avanza;
            fin
            sino inicio
               derecha;
               avanza;
               mientras junto-a-zumbador hacer
                  coge-zumbador;
               regresa;
               avanza;
               derecha;
               avanza;
            fin;

      fin
      sino avanza;
    fin;

            si junto-a-zumbador entonces inicio
            repetir x veces inicio
               si junto-a-zumbador entonces inicio
                  coge-zumbador;
                  derecha;
                  avanza;
                  deja-zumbador;
                  regresa;
                  avanza;
                  derecha;
               fin
               sino inicio
                  si orientado-al-oeste entonces
                     derecha;
               fin;
            fin;
            si junto-a-zumbador o orientado-al-norte entonces  inicio
               si orientado-al-oeste entonces
                  derecha;
               avanza;
               mientras junto-a-zumbador hacer inicio
                  coge-zumbador;
                  regresa;
                  avanza;
                  deja-zumbador;
                  regresa;
                  avanza;
               fin;
               regresa;
               avanza;
               derecha;
            fin
            sino inicio
               derecha;
               avanza;
               mientras junto-a-zumbador hacer
                  coge-zumbador;
               regresa;
               avanza;
               derecha;
            fin;
      fin;



   fin;
   fin;


   define-nueva-instruccion cuantos como inicio
      mientras junto-a-zumbador y frente-libre hacer
         avanza;
      si ningun-zumbador-en-la-mochila entonces inicio
         regresa;
         avanza;
         regresa;
         coge-zumbador;
         gira-izquierda;
         avanza;
         deja-zumbador;
         regresa;
         avanza;
         derecha;
         cuenta(1);
         derecha;
         avanza;
         derecha;
          mientras no-junto-a-zumbador hacer
               avanza;
            deja-zumbador;
            derecha;
            avanza;
            derecha;
            avanza;
      fin
      sino inicio
         gira-izquierda;
         avanza;
         deja-zumbador;
         regresa;
         avanza;
         derecha;
      fin;
      mientras frente-libre hacer inicio
         si junto-a-zumbador entonces inicio
            cuenta(0);
            derecha;
            avanza;
            derecha;
            mientras no-junto-a-zumbador hacer
               avanza;
            deja-zumbador;
            derecha;
            avanza;
            derecha;
            avanza;
         fin
         sino avanza;
      fin;
       si junto-a-zumbador entonces inicio
            cuenta(0);
            derecha;
            avanza;
            derecha;
            mientras no-junto-a-zumbador hacer
               avanza;
            deja-zumbador;
            derecha;
            avanza;
            derecha;
            avanza;
         fin
   fin;
   define-nueva-instruccion acomoda(x) como inicio
      si junto-a-zumbador entonces inicio
         coge-zumbador;
         acomoda(sucede(x));
      fin
      sino inicio
         derecha;
         avanza;
         derecha;
         mientras frente-libre hacer
            avanza;
         repetir x veces
            deja-zumbador;
         coge-zumbador;
      fin;
   fin;
    inicia-ejecucion
       cuantos;
       derecha;
       avanza;
       derecha;
       mientras no-junto-a-zumbador hacer
          avanza;
       acomoda(0);

        apagate;
    termina-ejecucion
finalizar-programa
