iniciar-programa
   define-nueva-instruccion gira(n) como inicio
      repetir n veces
         gira-izquierda;
   fin;
   define-nueva-instruccion norte como inicio
      mientras no-orientado-al-norte hacer
         gira(1);
   fin;
   define-nueva-instruccion sur como inicio
      mientras no-orientado-al-sur hacer
         gira(1);
   fin;
   define-nueva-instruccion este como inicio
      mientras no-orientado-al-este hacer
         gira(1);
   fin;
   define-nueva-instruccion oeste como inicio
      mientras no-orientado-al-oeste hacer
         gira(1);
   fin;
   define-nueva-instruccion quita(n) como inicio
      si junto-a-zumbador y no si-es-cero(n) entonces inicio
         coge-zumbador;
         quita(precede(n));
      fin
      sino inicio
         si no-junto-a-zumbador y si-es-cero(n)entonces
            sur;
         si junto-a-zumbador y si-es-cero(n)entonces inicio
            mientras junto-a-zumbador hacer
               coge-zumbador;
         fin;
      fin;
   fin;
   define-nueva-instruccion mayor(n) como inicio
      si junto-a-zumbador y no si-es-cero(n) entonces inicio
         coge-zumbador;
         mayor(precede(n));
      fin;
   fin;
   define-nueva-instruccion proceso(n) como inicio
      oeste;
      mientras frente-libre hacer
         avanza;
      sur;
      mientras frente-libre hacer
         avanza;
      norte;
      mayor(n);
      repetir n veces
         deja-zumbador;
      repetir 5 veces
         avanza;
      este;
   fin;
   define-nueva-instruccion cuenta(n) como inicio
      si junto-a-zumbador entonces inicio
         mientras junto-a-zumbador hacer
            coge-zumbador;
         cuenta(sucede(n));
      fin
      sino inicio
         si frente-libre entonces inicio
            avanza;
            si junto-a-zumbador entonces inicio
               cuenta(n);
            fin
            sino inicio
               proceso(n);
            fin;
         fin
         sino inicio
            proceso(n);
         fin;
      fin;
   fin;
   define-nueva-instruccion tendedero(n) como inicio
      si junto-a-zumbador entonces inicio
         coge-zumbador;
         tendedero(sucede(n));
      fin
      sino inicio
         mientras no-junto-a-zumbador hacer
            avanza;
         este;
         mientras frente-libre hacer inicio
            quita(n);
            si orientado-al-sur entonces inicio
               repetir n veces
                  deja-zumbador;
               este;
            fin;
            avanza;
            si frente-bloqueado entonces inicio
               quita(n);
               si orientado-al-sur entonces inicio
                  repetir n veces
                     deja-zumbador;
                  este;
               fin;
            fin;
         fin;
         oeste;
         mientras frente-libre hacer
            avanza;
         este;
         mientras frente-libre o junto-a-zumbador hacer inicio
            mientras no-junto-a-zumbador hacer
               si frente-libre entonces inicio
                  avanza;
               fin
               sino inicio
                  apagate;
               fin;
            cuenta(0);
         fin;
      fin;
   fin;
   define-nueva-instruccion comienzo como inicio
      norte;
      avanza;
      tendedero(0);
   fin;
   inicia-ejecucion
      comienzo;
      apagate;
   termina-ejecucion
finalizar-programa