iniciar-programa

   define-nueva-instruccion este como inicio
      mientras no-orientado-al-este hacer gira-izquierda;
   fin;

   define-nueva-instruccion oeste como inicio
      mientras no-orientado-al-oeste hacer gira-izquierda;
   fin;

   define-nueva-instruccion sur  como inicio
      mientras no-orientado-al-sur hacer gira-izquierda;
   fin;

   define-nueva-instruccion norte como inicio
      mientras no-orientado-al-norte hacer gira-izquierda;
   fin;

   define-nueva-instruccion ir_32 como inicio
      repetir  2 veces avanza;
      este;
      avanza;
   fin;

   define-nueva-instruccion ir_41 como inicio

      oeste;
      mientras frente-libre hacer avanza;
      norte;
      avanza;

   fin;

   define-nueva-instruccion ir_111 como inicio
      sur;
      avanza;
      este;


   fin;

   define-nueva-instruccion tomarybajar como inicio
      si junto-a-zumbador entonces inicio
         coge-zumbador;
         tomarybajar;
         deja-zumbador;
      fin sino inicio
         avanza;
      fin;
   fin;

   define-nueva-instruccion amontonar como inicio
      ir_32;
      repetir 11 veces inicio
         sur;
         tomarybajar;
         tomarybajar;
         norte;
         repetir 2 veces avanza;
         este;
         avanza;
      fin;
   fin;

   define-nueva-instruccion irlinea3 como inicio
       norte;
       avanza;
       avanza;
    fin;

    define-nueva-instruccion baja como inicio
       sur;
       repetir 2 veces avanza;
    fin;

    define-nueva-instruccion lleva1 como inicio
       coge-zumbador;
       oeste;
       avanza;
       deja-zumbador;
    fin;







    define-nueva-instruccion resta(n) como inicio
      si no(si-es-cero(n)) entonces inicio
         coge-zumbador;
         resta(precede(n));
      fin sino inicio
         si junto-a-zumbador entonces inicio
            coge-zumbador;
            resta(n);
            deja-zumbador;
         fin sino inicio
            baja;
         fin;
      fin;
   fin;

   define-nueva-instruccion suma(n) como inicio
      si no(si-es-cero(n)) entonces inicio
         si junto-a-zumbador entonces inicio
            coge-zumbador;
            suma(precede(n));
         fin sino inicio
            irlinea3;
            resta(sucede(n));
            oeste;
            avanza;

         fin;
      fin sino inicio

         si junto-a-zumbador entonces inicio
            lleva1;
         fin sino inicio

            irlinea3;
            resta(sucede(n));
            oeste;
            avanza;


         fin;

      fin;
   fin;



   define-nueva-instruccion recogerbase(n) como inicio
      si junto-a-zumbador entonces inicio
         coge-zumbador;
         recogerbase (sucede(n));
      fin sino inicio
         ir_111;
         repetir 11 veces inicio
            avanza;
            repetir n veces deja-zumbador;
         fin;
         sur;
         repetir 2 veces avanza;
         repetir 11 veces
            suma(precede(n));


      fin;

   fin;



    inicia-ejecucion
       amontonar;
       ir_41;
       recogerbase(0);

        apagate;
    termina-ejecucion
finalizar-programa
