iniciar-programa

   define-nueva-instruccion NORTE como
      mientras no orientado-al-NORTE hacer gira-izquierda;
   define-nueva-instruccion SUR como
      mientras no-orientado-al-sur hacer gira-izquierda;
   define-nueva-instruccion OESTE como
      mientras no orientado-al-oeste hacer gira-izquierda;
   define-nueva-instruccion ESTE como
      mientras no orientado-al-este hacer gira-izquierda;

   define-nueva-instruccion CAMINA como
      mientras frente-libre hacer avanza;


   define-nueva-instruccion IR-1-1 como inicio
       SUR;
       CAMINA;
       OESTE;
       CAMINA;
   fin;

   define-nueva-instruccion RECORRER-FILA como inicio
      ESTE;
      Repetir 11 veces avanza;
   fin;


   define-nueva-instruccion PONER-ABAJO como inicio
      avanza;
      ESTE;
      RECORRER-FILA;
      NORTE;
      avanza;
      repetir 11 veces inicio
         mientras junto-a-zumbador hacer inicio
            si junto-a-zumbador entonces coge-zumbador;
            SUR;
            avanza;
            avanza;
            deja-zumbador;
            NORTE;
            avanza;
            avanza;
         fin;
         SUR;
         avanza;
         mientras junto-a-zumbador hacer inicio
            si junto-a-zumbador entonces coge-zumbador;
            SUR;
            avanza;
            deja-zumbador;
            NORTE;
            avanza;
         fin;
         OESTE;
         avanza;
         NORTE;
         avanza;
      fin;
   fin;


   define-nueva-instruccion IR-3-12 como inicio
      SUR;
      CAMINA;
      RECORRER-FILA;
      NORTE;
      avanza;
      avanza;
      OESTE;
      repetir 11 veces inicio
         deja-zumbador;
         avanza;
      fin;
      IR-1-1;
   fin;


   define-nueva-instruccion TOMAR-BASE(n) como inicio
      si junto-a-zumbador entonces inicio
         coge-zumbador;
         TOMAR-BASE(sucede(n));
         IR-3-12;
      fin
      sino IR-1-1;
   fin;

   define-nueva-instruccion QUITAR-1 como inicio
      ESTE;
      RECORRER-FILA;
      NORTE;
      avanza;
      avanza;
      OESTE;
      repetir 11 veces inicio
         coge-zumbador;
         avanza;
      fin;
      IR-1-1;
   fin;

   define-nueva-instruccion SUMAR como inicio
      ESTE;
      RECORRER-FILA;
      NORTE;
      avanza;
      avanza;
      repetir 11 veces inicio
         mientras junto-a-zumbador hacer inicio
            coge-zumbador;
            SUR;
            CAMINA;
            si junto-a-zumbador entonces inicio
               coge-zumbador;
               NORTE;
               avanza;
               deja-zumbador;
            fin
            sino inicio
               NORTE;
               avanza;
               avanza;
            fin;
            avanza;
         fin;
         SUR;
         CAMINA;
         si junto-a-zumbador entonces inicio
            coge-zumbador;
            OESTE;
            avanza;
            deja-zumbador;
            NORTE;
            avanza;
            avanza;
         fin
         sino inicio
            NORTE;
            avanza;
            mientras junto-a-zumbador hacer inicio
               coge-zumbador;
               SUR;
               avanza;
               deja-zumbador;
               NORTE;
               avanza;
            fin;
            OESTE;
            avanza;
            NORTE;
            avanza;
         fin;
      fin;
   fin;


   define-nueva-instruccion LIMPIAR como inicio
      ESTE;
      repetir 11 veces inicio
         avanza;
         mientras junto-a-zumbador hacer coge-zumbador;
      fin;
      SUR;
      avanza;
         mientras junto-a-zumbador hacer coge-zumbador;
      OESTE;
      repetir 11 veces inicio
         avanza;
         mientras junto-a-zumbador hacer coge-zumbador;
      fin;
   fin;


    inicia-ejecucion
       PONER-ABAJO;
       avanza;
       TOMAR-BASE(0);
       QUITAR-1;
       SUMAR;
       LIMPIAR;
        apagate;
    termina-ejecucion
finalizar-programa
