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 mv como
inicio
  repetir 2 veces
    gira-izquierda;
fin;
define-nueva-instruccion mira-norte como
inicio
  mientras no-orientado-al-norte hacer
    gira-izquierda;
fin;
define-nueva-instruccion paso-atras como
inicio
  repetir 2 veces
    gira-izquierda;
  avanza;
  repetir 2 veces
    gira-izquierda;
fin;
define-nueva-instruccion acomoda como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    acomoda;
    deja-zumbador;
    avanza;
    deja-zumbador;
    paso-atras;
  fin
  sino
  inicio
    gira-izquierda;
  fin;
fin;
define-nueva-instruccion lleva como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    lleva;
    deja-zumbador;
  fin
  sino
  inicio
    avanza;
    mientras junto-a-zumbador hacer
       coge-zumbador;
  fin;
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 swap como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    swap;
    deja-zumbador;
  fin
  sino
  inicio
    mv;
    avanza;
    gira-izquierda;
    avanza;
    mientras junto-a-zumbador hacer
      coge-zumbador;
  fin;
fin;
define-nueva-instruccion intercambia como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    intercambia;
    deja-zumbador;
  fin
  sino
  inicio
    gira-izquierda;
    avanza;
    gira-izquierda;
    avanza;
    gira-izquierda;
  fin;
fin;
define-nueva-instruccion menor como
inicio
  mientras junto-a-zumbador hacer
  inicio
    coge-zumbador;
    avanza;
    si junto-a-zumbador entonces
    inicio
      coge-zumbador;
      paso-atras;
    fin
    sino
    inicio
      mira-norte;
    fin;
  fin;
  si no-junto-a-zumbador y orientado-al-este entonces
  inicio
    mira-norte;
    avanza;
    swap;
    gira-izquierda;
    avanza;
    intercambia;
    avanza;
  fin
  sino
  inicio
    si orientado-al-norte entonces
    inicio
      avanza;
      gira-izquierda;
      avanza;
      gira-izquierda;
      lleva;
      gira-izquierda;
      avanza;
      gira-izquierda;
      avanza;
      mv;
      lleva;
      gira-izquierda;
    fin;
  fin;
fin;
define-nueva-instruccion compara como
inicio
  acomoda;
  gira-derecha;
  avanza;
  acomoda;
  gira-derecha;
  paso-atras;
  menor;
fin;
define-nueva-instruccion mueve como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    mueve;
    deja-zumbador;
  fin
  sino
  inicio
    gira-derecha;
    repetir 2 veces
      avanza;
    gira-izquierda;
    mientras frente-libre hacer
     avanza;
  fin;
fin;
define-nueva-instruccion minimo(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    minimo(sucede(n));
    deja-zumbador;
  fin
  sino
  inicio
  repetir n veces
    deja-zumbador;
    avanza;
  fin;
fin;
define-nueva-instruccion muevess como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    muevess;
    deja-zumbador;
  fin
  sino
  inicio
    mientras frente-libre hacer
      avanza;
    gira-izquierda;
    mientras junto-a-zumbador hacer
      avanza;
  fin;
fin;
define-nueva-instruccion largo(n) como
inicio
  si junto-a-zumbador entonces
  inicio
    avanza;
    largo(sucede(N));
  fin
  sino
  inicio
    mv;
    mientras frente-libre hacer
      avanza;
   mv;
   repetir precede(N) veces
   inicio
   repetir 2 veces
   inicio
    repetir precede(N) veces
     compara;
    mira-este;
    mv;
    mientras no-junto-a-zumbador hacer
      avanza;
    mueve;
    mira-sur;
    mientras frente-libre hacer
      avanza;
    mira-este;
   fin;
   mira-norte;
   repetir 2 veces
     avanza;
   minimo(0);
   mira-sur;
   avanza;
   muevess;
   mira-oeste;
   mientras frente-libre hacer
     avanza;
   mv;
   fin;
  fin;
fin;
define-nueva-instruccion final como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    final;
    deja-zumbador;
  fin
  sino
  inicio
    mientras frente-libre hacer
      avanza;
    paso-atras;
  fin;
fin;
    inicia-ejecucion
    largo(0);
    mientras junto-a-zumbador hacer
      coge-zumbador;
    mira-norte;
    mientras no-junto-a-zumbador hacer
      avanza;
    mv;
    FINAL;
        apagate;
    termina-ejecucion
finalizar-programa
 