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 cuartos como
inicio
  mientras orientado-al-norte hacer
    inicio
      mientras no-junto-a-zumbador y frente-libre hacer avanza;
      si frente-bloqueado y no-junto-a-zumbador y derecha-libre entonces
        inicio
          sur;
          mientras frente-libre hacer avanza;
          este;
          avanza;
          norte;
          repetir 2 veces avanza;
        fin;
      si frente-bloqueado y derecha-bloqueada entonces sur;

      si junto-a-zumbador entonces
        inicio
          coge-zumbador;
          si frente-libre entonces avanza
            sino
              inicio
                si derecha-libre entonces
                 inicio
                    sur;
                     mientras frente-libre hacer avanza;
                    este;
                    avanza;
                    norte;
                    repetir 2 veces avanza;
                 fin
                sino sur;
              fin;
          cuartos;
          si orientado-al-este entonces deja-zumbador;
        fin;
    fin;

  si orientado-al-sur entonces
    inicio
      mientras frente-libre hacer avanza;
      oeste;
      mientras frente-libre hacer avanza;
      este;
      mientras junto-a-zumbador hacer avanza;
    fin;
fin;

    inicia-ejecucion
    mientras orientado-al-norte hacer
      inicio
         repetir 2 veces avanza;
         cuartos;
           si frente-libre entonces
            inicio
              oeste;
              mientras frente-libre hacer avanza;
              norte;
            fin;
      fin;
        apagate;
    termina-ejecucion
finalizar-programa
