iniciar-programa
  define-nueva-instruccion gd como
  inicio
  repetir 3 veces
  gira-izquierda;
  fin;
  define-nueva-instruccion mv como
  inicio
  repetir 2 veces
  gira-izquierda;
  fin;
  define-nueva-instruccion explora como
  inicio
   si junto-a-zumbador entonces
   inicio
    coge-zumbador;
    explora;
    si frente-libre entonces
    avanza
   fin
   sino
   inicio
   mientras no orientado-al-oeste hacer
   gira-izquierda;
   mientras frente-libre hacer
   avanza;
   gira-izquierda;
   mientras frente-libre hacer
   avanza;
   gira-izquierda;
   fin;
  fin;
  define-nueva-instruccion barre como
  inicio
  si no (izquierda-bloqueada y frente-bloqueado) entonces
  inicio
   si junto-a-zumbador entonces
   inicio
   explora;
   si no junto-a-zumbador entonces
   deja-zumbador
   sino
   coge-zumbador;
   mv;
   mientras frente-libre hacer
   avanza;
   gd;
   si frente-libre entonces
   avanza;
   gd;
   barre;
   fin
   sino
   inicio
    si frente-libre entonces
    inicio
    avanza;
    barre
    fin
    sino
    inicio
    mv;
    mientras frente-libre hacer
    avanza;
    gd;
    si frente-libre entonces
    avanza;
    gd;
    barre;
    fin;
   fin;
   fin
   sino
   inicio
    si junto-a-zumbador entonces
    inicio
    explora;
    si no junto-a-zumbador entonces
    deja-zumbador
    sino
    coge-zumbador;
    mientras no orientado-al-oeste hacer
    gira-izquierdA;
    mientras frente-libre hacer
    avanza;
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    mv;
    si frente-libre entonces
    avanza;
    mientras algun-zumbador-en-la-mochila hacer
    deja-zumbador;
    mv;
    si frente-libre entonces
    avanza;
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    mv;
    fin
    sino
    inicio
    mientras no orientado-al-oeste hacer
    gira-izquierdA;
    mientras frente-libre hacer
    avanza;
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    mv;
    si frente-libre entonces
    avanza;
    mientras algun-zumbador-en-la-mochila hacer
    deja-zumbador;
    mv;
    si frente-libre entonces
    avanza;
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
    mv;
    fin;
   fin;
  fin;
    inicia-ejecucion
      mientras no orientado-al-norte hacer
      gira-izquierda;
      si frente-libre entonces
      avanza;
      gd;
      barre;
      mientras no junto-a-zumbador y frente-libre hacer
      avanza;
      mientras frente-libre hacer
      inicio
      si junto-a-zumbador entonces
      coge-zumbador;
      si frente-libre entonces
      avanza;
      fin;
      mientras algun-zumbador-en-la-mochila hacer
      deja-zumbador;
        apagate;
    termina-ejecucion
finalizar-programa
