iniciar-programa
   
 define-nueva-instruccion mediaVuelta como inicio
 
       gira-izquierda;
 
       gira-izquierda;

    fin;

   
 define-nueva-instruccion giraDerecha como inicio

        mediaVuelta;
 
       gira-izquierda;

    fin;

   
 define-nueva-instruccion veAEsquinaInferiorIzquierda como inicio

        mientras no-orientado-al-oeste hacer gira-izquierda;

        mientras frente-libre hacer avanza;
  
      gira-izquierda;
  
      mientras frente-libre hacer avanza;
   
     mediaVuelta;
   
 fin;

 
   define-nueva-instruccion avanzaEnElCuadro como inicio
 
       si frente-libre entonces
  
          avanza
 
       sino inicio
 
           si orientado-al-norte entonces inicio
   
             giraDerecha;
        
        si frente-libre entonces inicio
  
                  avanza;

                    giraDerecha;
 
               fin;
          
  fin
  
          sino inicio
 
                gira-izquierda;
  
               si frente-libre entonces inicio
 
                    avanza;
 
                    gira-izquierda;
     
            fin;
         
   fin;
      
  fin;
  
  fin;

   
 define-nueva-instruccion recogeTodosLosZumbadores como inicio

        veAEsquinaInferiorIzquierda;

        mientras no-orientado-al-este hacer inicio
 
           si junto-a-zumbador entonces coge-zumbador;

            avanzaEnElCuadro;
  
      fin;
  
  fin;

  
  define-nueva-instruccion llenaLadoIzquierdoConZumbadores como inicio
   
     veAEsquinaInferiorIzquierda;
   
     mientras algun-zumbador-en-la-mochila hacer inicio
  
          deja-zumbador;
        
    avanzaEnElCuadro;
    
    fin;
   
 fin;

  
  define-nueva-instruccion dejaResultado(resultado) como inicio
 
       veAEsquinaInferiorIzquierda;
   
     giraDerecha;
       
 repetir resultado veces gira-izquierda;
 
       apagate;
 
   fin;

   
 define-nueva-instruccion resuelve como inicio
 
       si junto-a-zumbador entonces inicio
  
          coge-zumbador;
     
       avanzaEnElCuadro;
   
         resuelve;
        
    si orientado-al-este entonces
  
              dejaResultado(2);

            avanzaEnElCuadro;
     
   fin;
  
  fin;

   
 inicia-ejecucion
  
      recogeTodosLosZumbadores;
 
       llenaLadoIzquierdoConZumbadores;

        veAEsquinaInferiorIzquierda;
 
       resuelve;
     
   si orientado-al-este entonces
    
        dejaResultado(1)
    
    sino
           
 dejaResultado(0);
  
  termina-ejecucion

finalizar-programa