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


     fin;
     define-nueva-instruccion cuenta2(n) como
     inicio
       si junto-a-zumbador entonces
          inicio
            coge-zumbador;
            cuenta2(sucede(n));
          fin;

            si no-orientado-al-oeste entonces
              inicio
              repetir n veces deja-zumbador;
              si frente-libre entonces avanza;
              repetir n veces deja-zumbador;
              mientras no orientado-al-oeste hacer gira-izquierda;
             fin;


     fin;

   define-nueva-instruccion dinamica como
      inicio
          gira-izquierda;
          si frente-libre entonces
              inicio
                avanza;
                repetir 2 veces gira-izquierda;
                 cuenta(0);
             fin
            sino
              gira-izquierda;

          si frente-libre entonces
             inicio
               avanza;
               repetir 2 veces gira-izquierda;
               cuenta2(0);
            fin
          sino
            repetir 2 veces gira-izquierda;
      fin;

    inicia-ejecucion
    mientras no-orientado-al-este hacer gira-izquierda;
     mientras junto-a-zumbador hacer coge-zumbador;
     deja-zumbador;
     mientras derecha-libre o frente-libre hacer
        inicio

           dinamica;
            mientras no-orientado-al-este hacer gira-izquierda;
           si frente-libre entonces
             avanza
            sino
              inicio
                repetir 2 veces gira-izquierda;
                mientras frente-libre hacer avanza;
                repetir 2 veces gira-izquierda;
                 mientras frente-libre y derecha-bloqueada hacer avanza;
                 si derecha-libre entonces
                  inicio
                    repetir 3 veces gira-izquierda;
                    si frente-libre entonces avanza;
                    gira-izquierda;
                   fin; 

              fin;
              mientras junto-a-zumbador hacer coge-zumbador;
           fin;
          dinamica;     


        apagate;
    termina-ejecucion
finalizar-programa
