iniciar-programa
 Define-nueva-instruccion  gira(n) como
    Repetir n veces gira-izquierda;

 Define-nueva-instruccion Ubica como
   inicio
       Mientras no-orientado-al-sur hacer gira-izquierda;
       Repetir  2 veces
         inicio
            Mientras frente-libre hacer avanza;
            gira(3);
         fin;
   fin;
 Define-nueva-instruccion Verifica como
   inicio
       coge-zumbador;
       si junto-a-zumbador entonces
         inicio
             coge-zumbador;
              si junto-a-zumbador entonces
                 Repetir 2 veces deja-zumbador
              sino
                 Repetir 3 veces deja-zumbador;
         fin;
   fin;
 define-nueva-instruccion copia como
  inicio
       Si junto-a-zumbador entonces
         inicio
            coge-zumbador;
            copia;
            deja-zumbador;
         fin
      sino
         inicio
             Avanza;
             si junto-a-zumbador entonces
             Verifica;
         fin;
  fin;
 Define-nueva-instruccion Elimina como
   inicio
       Si junto-a-zumbador entonces
         inicio
             Verifica;
               Repetir 4 veces
                 inicio
                     Si frente-libre entonces
                       inicio
                            avanza;
                            si junto-a-zumbador entonces
                              inicio
                                 gira(2);
                                 avanza;
                                 gira(2);
                                 copia;
                                 Elimina;
                                 gira(2);
                                 Copia;
                                 gira(2);
                              fin
                            sino
                              inicio
                                  gira(2);
                                  avanza;
                                  gira(2);
                              fin;

                       fin;
                      gira(1);
                 fin;
         fin;
   fin;
 Define-nueva-instruccion b como
   inicio

      Mientras no-junto-a-zumbador  y orientado-al-norte hacer
                inicio
                      Mientras frente-libre y no-junto-a-zumbador hacer avanza;
                      Si no-junto-a-zumbador entonces
                        inicio
                            gira(2);
                            Mientras frente-libre hacer avanza;
                            gira(1);
                            Si frente-libre entonces
                              inicio
                                 avanza;
                                 gira(1);
                              fin;
                        fin;
                fin;
   fin;
 Define-nueva-instruccion divide como
   inicio
       Si junto-a-zumbador entonces
         inicio
               Repetir 3 veces coge-zumbador;
               divide;
               deja-zumbador;
         fin;
   fin;
 Define-nueva-instruccion CuentaMaximo(n) como
   inicio
         Si junto-a-zumbador entonces
           inicio
                coge-zumbador;
                CuentaMaximo(sucede(n));
           fin
         sino
           inicio
                b;
                Si junto-a-zumbador entonces
                  inicio
                      Repetir  n veces
                         Si junto-a-zumbador entonces coge-zumbador;
                        CuentaMaximo(n);
                  fin
                sino
                 inicio
                    ubica;
                    repetir n veces deja-zumbador;
                    divide;
                    apagate;
                 fin;
           fin;
   fin;

    inicia-ejecucion
              Ubica;
    Mientras orientado-al-norte hacer
      inicio
             B;
             Si orientado-al-norte y junto-a-zumbador entonces
               inicio
                    Elimina;
                    Si frente-libre entonces
                      avanza
                    sino
                      inicio
                         gira(2);
                            Mientras frente-libre hacer avanza;
                            gira(1);
                            Si frente-libre entonces
                              inicio
                                 avanza;
                                 gira(1);
                              fin;
                      fin;
               fin;
      fin;
    Ubica;
    CuentaMaximo(0);
        apagate;
    termina-ejecucion
finalizar-programa
 