iniciar-programa
define-nueva-instruccion mira-norte como
inicio
  mientras no-orientado-al-norte hacer
    gira-izquierda;
fin;
define-nueva-instruccion gira-derecha como
inicio
  repetir 3 veces
    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 mira-sur como
inicio
  mientras no-orientado-al-sur hacer
    gira-izquierda;
fin;
define-nueva-instruccion recoge como
inicio
  mientras derecha-libre hacer
  inicio
    mientras junto-a-zumbador y frente-libre hacer
      avanza;
    si no-junto-a-zumbador entonces
      paso-atras;
    mientras junto-a-zumbador hacer
      coge-zumbador;
    gira-derecha;
    avanza;
    gira-derecha;
    mientras frente-libre hacer
      avanza;
    mira-norte;
  fin;
  mientras junto-a-zumbador y frente-libre hacer
    avanza;
  si no-junto-a-zumbador entonces
    paso-atras;
  mientras junto-a-zumbador hacer
    coge-zumbador;
  mira-sur;
  mientras frente-libre hacer
    avanza;
  gira-derecha;
  mientras  frente-libre hacer
    avanza;
  repetir 2 veces
    gira-izquierda;
  mientras no-junto-a-zumbador hacer
    avanzA;
  mira-norte;
  avanza;
  mientras algun-zumbador-en-la-mochila hacer
    deja-zumbador;
fin;
define-nueva-instruccion resta(n) como
inicio
   si junto-a-zumbador entonces
   inicio
     coge-zumbador;
     resta(sucede(n));
   fin
   sino
   inicio
      avanza;
      repetir n veces
      inicio                                            
        si junto-a-zumbador entonces
        inicio
          coge-zumbador;
        fin;

      fin;
   fin;
   si no-junto-a-zumbador entonces
   inicio
       repetir n veces
         deja-zumbador;
       paso-atraS;
       mientras algun-zumbador-en-la-mochila hacer
         deja-zumbador;
     mira-sur;
   fin;
fin;
define-nueva-instruccion falta como
inicio
   si junto-a-zumbador entonces
   inicio
     coge-zumbador;
     falta;
     deja-zumbador;
   fin
   sino
     paso-atras;
fin;
define-nueva-instruccion sobra como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    sobra;
    coge-zumbador;
  fin
  sino
  inicio
    mira-nortE;
    avanza;
  fin;
fin;
define-nueva-instruccion lleva como
inicio
  si junto-a-zumbador entonces
  inicio
    coge-zumbador;
    lleva;
    deja-zumbador;
  fin
  sino
  inicio
    mira-sur;
    mientras frente-libre hacer
      avanza;
    gira-izquierda;
    mientras frente-libre hacer
      avanza;
    gira-izquierda;
    mientras derecha-bloqueada hacer
      avanza;
    gira-derecha;
    avanza;
  fin;
fin;
    inicia-ejecucion
    mientras algun-zumbador-en-la-mochila hacer
      deja-zumbador;
      avanza;
    mira-norte;
    recoge;
    paso-atraS;
    resta(0);
    si orientado-al-sur  entonces
    inicio
       sobra;
       lleva;
    fin
    sino
    inicio
      falta;
    fin;
        apagate;
    termina-ejecucion
finalizar-programa
