iniciar-programa
    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 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 irotrolado como
          inicio
              norte;
              mientras frente-libre hacer avanza;
              este;
              mientras frente-libre hacer avanza;
              sur;
              mientras frente-libre hacer avanza;
              norte;
          fin;

define-nueva-instruccion contar como
           inicio
               si frente-libre entonces
                   inicio
                       avanza;
                       contar;
                       avanza;
                   fin sino
                       inicio
                           irotrolado;
                       fin;
           fin;

    define-nueva-instruccion corregir como
        inicio
            oeste;
            si izquierda-bloqueada   entonces
                inicio
                    avanza;
                    corregir;
                    avanza;
                fin sino
                    inicio
                        oeste;
                        mientras frente-libre hacer avanza;
                        sur;
                        contar;
                        oeste;
                        mientras frente-libre hacer avanza;
                        norte;
                        mientras izquierda-bloqueada hacer avanza;
                        oeste;
                        mientras frente-libre hacer avanza;
                        este;

                    fin;

        fin;

   define-nueva-instruccion corregir2 como
       inicio

           si derecha-bloqueada y frente-libre entonces
               inicio
                   avanza;
                   corregir2;
                   avanza;
               fin sino
                   inicio
                        oeste;
                        mientras frente-libre hacer avanza;
                        sur;
                        contar;
                        oeste;
                        mientras frente-libre hacer avanza;
                        sur;
                        mientras derecha-bloqueada hacer avanza;
                        oeste;
                        mientras frente-libre hacer avanza;
                        este;
                        mientras izquierda-bloqueada hacer avanza;
                        oeste;
                        avanza;

                   fin;
       fin;

 inicia-ejecucion
    este;
    si frente-libre  entonces
        inicio
            si izquierda-bloqueada entonces
                inicio
                    corregir;
                    deja-zumbador;
                fin;
            si derecha-bloqueada y no-junto-a-zumbador entonces
                inicio
                    corregir2;
                    deja-zumbador;
                fin;

        fin sino
            inicio
                oeste;
                mientras frente-libre hacer avanza;
                sur;
                contar;
                oeste;
                mientras frente-libre hacer avanza;
                deja-zumbador;
            fin;

       apagate;
  termina-ejecucion
finalizar-programa
