iniciar-programa
define-nueva-instruccion gira-derecha como
inicio
  repetir 3 veces
    gira-izquierda;
fin;
define-nueva-instruccion mira-norte como
inicio
  mientras no-orientado-al-norte hacer
    gira-izquierda;
fin;
define-nueva-instruccion mira-sur como
inicio
  mientras no-orientado-al-sur hacer
    gira-izquierda;
fin;
define-nueva-instruccion mira-este como
inicio
  mientras no-orientado-al-este hacer
    gira-izquierda;
fin;
define-nueva-instruccion mira-oeste como
inicio
  mientras no-orientado-al-oeste hacer
    gira-izquierda;
fin;
define-nueva-instruccion ubicate como
inicio
  mira-oeste;
  mientras izquierda-bloqueada y frente-libre hacer
    avanza;
  mira-sur;
fin;
define-nueva-instruccion travesia(n) como
inicio
  si frente-libre entonces
  inicio
     avanza;
     si izquierda-bloqueada y derecha-bloqueada entonces
     inicio
        si no-junto-a-zumbador y no-orientado-al-oeste y no-orientado-al-este entonces
        inicio
           deja-zumbador;
           travesia(sucede(n));
        fin
        sino
          travesia(n);
     fin
     sino
     inicio
        travesia(n);
     fin;
  fin
  sino
  inicio
     si orientado-al-sur o orientado-al-norte entonces
     inicio
        mira-este;
        mientras frente-libre hacer
          avanza;
        repetir 2 veces
          gira-izquierda;
        mientras izquierda-bloqueada y frente-libre hacer
        inicio
           avanzA;
        fin;
        si izquierda-libre entonces
        inicio
          mira-sur;
          travesia(n);
        fin
        sino
        inicio
           repetir n veces
             deja-zumbador;
        fin;
     fin;
  fin;

fin;
    inicia-ejecucion
    ubicate;

travesia(0);
        apagate;
    termina-ejecucion
finalizar-programa
