iniciar-programa
    define-nueva-instruccion norte como inicio
        mientras no-orientado-al-norte hacer inicio
            gira-izquierda;
       fin;
    fin;

    define-nueva-instruccion sur como inicio
        mientras no-orientado-al-sur hacer inicio
            gira-izquierda;
       fin;
    fin;

    define-nueva-instruccion este como inicio
        mientras no-orientado-al-este hacer inicio
            gira-izquierda;
       fin;
    fin;

    define-nueva-instruccion oeste como inicio
        mientras no-orientado-al-oeste hacer inicio
            gira-izquierda;
       fin;
    fin;

    define-nueva-instruccion brincar como inicio
    norte;
    si frente-libre entonces inicio
    avanza;
    oeste;
    fin sino inicio
    sur;
    mientras frente-libre hacer inicio
    avanza;
    fin;
    oeste;
    mientras frente-libre hacer inicio
    avanza;
    fin;
    sur;
    si frente-libre entonces inicio
    avanza;
    fin;

    fin;
    mientras frente-libre hacer inicio
    avanza;
    fin;
    este;
    fin;

    define-nueva-instruccion ir11 como inicio

    oeste;

    mientras frente-libre hacer inicio
    avanza;
    fin;
    este;

    fin;


     define-nueva-instruccion recoger(n) como inicio
         si junto-a-zumbador entonces inicio
             coge-zumbador;
             recoger(sucede(n));
          fin sino inicio
              si frente-libre entonces inicio
                  avanza;
                  recoger(0);
              fin sino inicio
                  brincar;
                  si derecha-libre entonces inicio
                   recoger(0);
                  fin;
              fin;
              si no si-es-cero (n) entonces inicio

                  repetir precede(n) veces inicio
                       avanza;
                  fin;
                  deja-zumbador;
                  ir11;
               fin;
           fin;
      fin;

       define-nueva-instruccion decidir como inicio
         si junto-a-zumbador entonces inicio
          coge-zumbador;
           si junto-a-zumbador entonces inicio
               deja-zumbador;
               si junto-a-zumbador entonces inicio
                mientras algun-zumbador-en-la-mochila hacer inicio
                   deja-zumbador;
               fin;
               coge-zumbador;
               coge-zumbador;
               fin;
           fin sino inicio
               mientras algun-zumbador-en-la-mochila hacer inicio
                   deja-zumbador;
               fin;
           fin;
       fin;
       fin;

      define-nueva-instruccion junto como inicio
      si junto-a-zumbador entonces inicio
      coge-zumbador;
      fin sino inicio
      mientras no-junto-a-zumbador hacer inicio
      avanza;
      fin;
      fin;

      si junto-a-zumbador entonces inicio
      deja-zumbador;
      avanza;
      fin;
      mientras no-junto-a-zumbador y frente-libre
      hacer inicio

      avanza;
      fin;

      mientras frente-libre  hacer inicio
      junto;
      fin;

      fin;


      define-nueva-instruccion tomar como inicio
      mientras frente-libre hacer inicio
      avanza;
      fin;
      oeste;
      mientras no junto-a-zumbador hacer inicio
      avanza;
      fin;
      si junto-a-zumbador entonces inicio
      junto;
      fin;
      fin;

      define-nueva-instruccion vaciar como inicio
      norte;
      avanza;
      mientras algun-zumbador-en-la-mochila hacer inicio
      deja-zumbador;
      fin;
      sur;
      avanza;
      este;
      fin;





    inicia-ejecucion
    norte;
    avanza;
    este;
    recoger(0);
    vaciar;
    tomar;
     si frente-bloqueado y junto-a-zumbador  entonces inicio
      decidir;
      fin;
   si no-junto-a-zumbador entonces inicio
       mientras algun-zumbador-en-la-mochila hacer inicio
           deja-zumbador;
       fin;
       fin;
        apagate;
    termina-ejecucion
finalizar-programa
