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 este como mientras no-orientado-al-este hacer gira-izquierda;
    define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gira-izquierda;


   define-nueva-instruccion contar como
   inicio
       si frente-libre entonces
       inicio
           sur;
           si frente-bloqueado entonces sal-de-instruccion;
           si frente-libre entonces avanza;
           si frente-libre entonces coge-zumbador;
           contar;
       fin
     sino inicio
          si frente-bloqueado y orientado-al-este entonces
          inicio
              sur;
              contar;
              sal-de-instruccion;
           fin;
          norte;
          coge-zumbador;
          fin;
     si no-junto-a-zumbador entonces avanza;
   fin;

   define-nueva-instruccion montones como
   inicio
       este;
       mientras frente-libre hacer avanza;
       norte;
       mientras frente-libre hacer avanza;
       sur;
       mientras frente-libre hacer
       inicio
           si no-junto-a-zumbador entonces avanza;
           si junto-a-zumbador y frente-libre entonces
           inicio
               coge-zumbador;
               si frente-libre entonces avanza;
           fin;
       fin;
       oeste;
       si junto-a-zumbador entonces coge-zumbador;
       mientras frente-libre hacer avanza;
       mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
       apagate;
    fin;

   define-nueva-instruccion filas como
    inicio
       mientras frente-libre hacer
       inicio
           mientras no-junto-a-zumbador y frente-libre hacer avanza;
           si junto-a-zumbador entonces
           inicio
               contar;
               este;
               si junto-a-zumbador entonces coge-zumbador;
               filas;
           fin;
       fin;
       si frente-bloqueado entonces
       inicio
           mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
           oeste;
           mientras frente-libre hacer avanza;
           si frente-bloqueado y izquierda-bloqueada y derecha-bloqueada entonces montones;
           sur;
         si izquierda-bloqueada y derecha-bloqueada entonces
         inicio
           mientras frente-libre hacer avanza;
           si junto-a-zumbador entonces coge-zumbador;
           oeste;
           avanza;
           si algun-zumbador-en-la-mochila entonces deja-zumbador;
           apagate;
        fin;
           avanza;
           este;
           filas
       fin;
   fin;


   inicia-ejecucion
        avanza;
        norte;
        mientras frente-libre hacer avanza;
        este;
        filas;
        apagate;
    termina-ejecucion
finalizar-programa
