iniciar-programa
define-nueva-instruccion gira-derecha como
inicio
  repetir 3 veces
    gira-izquierda;
fin;
define-nueva-instruccion mira-oeste como
inicio
  mientras no-orientado-al-oeste 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 mov(n) como
inicio
  si no(si-es-cero(n)) entonces
  inicio
    si junto-a-zumbador entonces
    inicio
      si frente-libre entonces
        avanza
      sino
      inicio
        gira-izquierda;
          avanza;
      fin;
      si junto-a-zumbador entonces
        mov(precede(n))
       sino
      inicio
      mientras no-junto-a-zumbador hacer
      inicio
        si frente-libre entonces
          avanza
        sino
        inicio
         gira-izquierda;
         avanza;
        fin;
      fin;
      si junto-a-zumbador entonces
        mov(precede(n));
    fin;
    fin
    sino
    inicio
      mientras no-junto-a-zumbador hacer
      inicio
        si frente-libre entonces
          avanza
        sino
        inicio
         gira-izquierda;
         avanza;
        fin;
      fin;
      si junto-a-zumbador entonces
        mov(precede(n));
    fin;

  fin;
fin;
define-nueva-instruccion mueve(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    mueve(sucede(n));
  fin
  sino
  inicio
    mov(n);
  fin;
fin;
define-nueva-instruccion largo(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    avanza;
    si frente-bloqueado entonces
      gira-izquierda;
    largo(sucede(n));
  fin
  sino
  inicio
    mientras algun-zumbador-en-la-mochila hacer
      deja-zumbador;
    repetir n veces
    inicio
      mueve(0);
      repetir 4 veces
      inicio
        si frente-bloqueado entonces
          gira-izquierda;
        mientras no-junto-a-zumbador hacer
          avanza;
      fin;
    fin;
  fin;
fin;
define-nueva-instruccion lleva como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    lleva;
    deja-zumbador;
  fin
  sino
  inicio
    mira-oeste;
    mientras frente-libre hacer
     avanza;
   mira-sur;
   mientras frente-libre hacer
     avanza;
  fin;
fin;
define-nueva-instruccion ubicate como
inicio
  mira-oeste;
  mientras frente-libre hacer
    avanza;
  mira-sur;
  mientras frente-libre hacer
    avanza;
  mira-este;
fin;
inicia-ejecucion
    UBICATE;
  
    mientras junto-a-zumbador hacer
    inicio
      coge-zumbador;
    fin;
    avanza;
    largo(0);
    lleva;
        apagate;
    termina-ejecucion
finalizar-programa
 