iniciar-programa
define-nueva-instruccion g(n) como
  inicio
     repetir n veces gira-izquierda;
   fin;
   define-nueva-instruccion v como
    inicio
      g(2);
      si frente-libre entonces avanza;
      g(2);
    fin;
   define-nueva-instruccion comp(n) como
     inicio
       si junto-a-zumbador entonces
         inicio
           coge-zumbador;
           comp(sucede(n));
         fin;
        si no-orientado-al-sur entonces
        inicio
           g(2);
           si frente-libre entonces avanza;
           g(3);
           si frente-libre entonces avanza;
           g(3);
           repetir n veces
              inicio
                si junto-a-zumbador entonces
                 coge-zumbador
             fin;
          repetir n veces deja-zumbador;
          mientras no-orientado-al-sur hacer gira-izquierda;
         fin;

     fin;
   define-nueva-instruccion com (n) como
     inicio
        si junto-a-zumbador entonces
          inicio
            coge-zumbador;
             com(sucede(n));
          fin;
         si no-orientado-al-sur entonces
           inicio
             repetir n veces deja-zumbador;
             v;
            repetir n veces deja-zumbador;
            mientras no-orientado-al-sur hacer gira-izquierda;
           fin;


     fin;
   define-nueva-instruccion cuenta(n) como
     inicio
       si junto-a-zumbador entonces
         inicio
            coge-zumbador;
            cuenta(sucede(n));
         fin;
      si no-orientado-al-sur entonces
        inicio
         si frente-libre entonces avanza;
         com(0);
           mientras no-orientado-al-norte hacer gira-izquierda;
            g(3);
            si frente-libre entonces avanza;
            g(1);
            si frente-libre entonces avanza;
            comp(0);
            repetir n veces deja-zumbador;
         fin;

     fin;
   define-nueva-instruccion  orilla como
     inicio
       mientras no-orientado-al-este hacer gira-izquierda;
       mientras frente-libre y junto-a-zumbador hacer avanza;

      si no-junto-a-zumbador entonces
         v;


     fin;
    define-nueva-instruccion max(n) como
      inicio
        si junto-a-zumbador entonces
          inicio
            coge-zumbador;
            max(sucede(n));
            fin;
             si frente-libre entonces avanza;
          mientras junto-a-zumbador hacer
            inicio

               repetir n veces
                 inicio
                   si junto-a-zumbador entonces coge-zumbador;

                  fin;
                repetir n veces deja-zumbador;
                max(0);
              fin;
            mientras no-orientado-al-oeste hacer gira-izquierda;
            mientras frente-libre hacer avanza;
            repetir n veces deja-zumbador;
           apagate;




      fin;

    inicia-ejecucion
    mientras no-orientado-al-este hacer gira-izquierda;
    si frente-libre entonces avanza;
      repetir 2 veces
       inicio
         mientras junto-a-zumbador y frente-libre hacer avanza;
         si no-junto-a-zumbador entonces
           inicio
             g(2);
             si frente-libre entonces avanza;
             g(2);
           fin;
         g(1);
        fin;
       mientras no-orientado-al-sur hacer gira-izquierda;
       mientras frente-libre hacer
        inicio
          orilla;
           mientras junto-a-zumbador hacer
           inicio
             mientras no-orientado-al-norte hacer gira-izquierda;
             cuenta(0);
             g(3);
             si frente-libre entonces avanza;
            fin;
           si no-junto-a-zumbador entonces
             v;
            mientras no-orientado-al-sur hacer gira-izquierda;

           si frente-libre entonces avanza;
        fin;
         orilla;
         mientras junto-a-zumbador hacer
           inicio
             mientras no-orientado-al-norte hacer gira-izquierda;
             cuenta(0);
             g(3);
             si frente-libre entonces avanza;
            fin;
           si no-junto-a-zumbador entonces
             v;
            mientras no-orientado-al-este hacer gira-izquierda;
             max(0);


        apagate;
    termina-ejecucion
finalizar-programa
