iniciar-programa
define-nueva-instruccion regresa como
  repetir 2 veces
    gira-izquierda;
define-nueva-instruccion derecha como
  repetir 3 veces
    gira-izquierda;
define-nueva-instruccion este como
si orientado-al-norte entonces inicio
  si derecha-libre entonces inicio
    derecha;
    avanza;
    derecha;
  fin;
  fin
  sino si orientado-al-sur entonces
  si izquierda-libre entonces inicio
    gira-izquierda;
    avanza;
    gira-izquierda;
  fin;
    inicia-ejecucion
    mientras no-orientado-al-este hacer inicio
      gira-izquierda;
    fin;
    avanza;
    mientras junto-a-zumbador hacer inicio
      coge-zumbador;
    fin;
    regresa;
    avanza;
    derecha;
    avanza;
    mientras derecha-bloqueada hacer inicio
      avanza;
    fin;
    derecha;
    avanza;
    derecha;
    avanza;
    mientras derecha-bloqueada y frente-libre hacer inicio
      avanza;
    fin;
    regresa;
    mientras frente-libre hacer inicio
      mientras frente-libre hacer inicio
         deja-zumbador;
      si frente-libre entonces
        avanza;
      si frente-bloqueado y no-junto-a-zumbador entonces
       deja-zumbador;
      fin;
      este;
    fin;
    si derecha-bloqueada entonces inicio
      regresa;
      mientras izquierda-bloqueada hacer inicio
        avanza;
      fin;
      gira-izquierda;
    fin
    sino si izquierda-bloqueada entonces inicio
      regresa;
    mientras derecha-bloqueada hacer inicio
      avanza;
    fin;
    derecha
    fin;
    avanza;
    derecha;
    avanza;
    mientras derecha-bloqueada hacer inicio
      avanza;
    fin;
    derecha;
    avanza;
    mientras derecha-bloqueada hacer inicio
      avanza;
    fin;
    regresa;
    avanza;
    mientras algun-zumbador-en-la-mochila hacer inicio
      deja-zumbador;
    fin;
        apagate;
    termina-ejecucion
finalizar-programa
