iniciar-programa
      define-nueva-instruccion gira(n) como
      inicio
         repetir n veces
           gira-izquierda;
      fin;
      define-nueva-instruccion esquina como
      inicio
         mientras no-orientado-al-este hacer
            gira-izquierda;
            mientras frente-libre hacer
               avanza;
            gira(3);
            mientras frente-libre hacer
               avanza;
            gira(2);
               avanza;
            gira(1);
      fin;
     define-nueva-instruccion llena(n) como
     inicio
          si si-es-cero(n) entonces
            apagate;
         si frente-libre entonces
              avanza
         sino
         si orientado-al-oeste y derecha-libre entonces
         inicio
            gira(3);
            avanza;
            gira(3);
         fin
         sino
         si orientado-al-este y izquierda-libre entonces
         inicio
             gira(1);
            avanza;
            gira(1);
         fin
         sino
            esquina;
        llena(precede(n));
     fin;
     define-nueva-instruccion cuenta(n) como
     inicio
         si junto-a-zumbador entonces
         inicio
           coge-zumbador;
           cuenta(sucede(n));
         fin
         sino
         inicio
            avanza;
            gira(1);
            llena(precede(n));
         fin;
     fin;
     define-nueva-instruccion m(n) como
     inicio
     si junto-a-zumbador entonces
     inicio
        coge-zumbador;
        m(sucede(n));
     fin
     sino
     inicio
        avanza;
        repetir 10 veces
           repetir n veces
              deja-zumbador;
         gira(1);
        cuenta(0);
     fin;
     fin;
    inicia-ejecucion
        mientras no-orientado-al-oeste hacer
           gira-izquierda;
        mientras frente-libre hacer
           avanza;
           gira(2);
        repetir 200 veces
           coge-zumbador;
         mientras frente-libre hacer
            avanza;
         gira(2);
         avanza;
         gira(2);
         m(0);
        apagate;
    termina-ejecucion
finalizar-programa
