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 recoger como inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        recoger;
    fin
    sino inicio
       mientras frente-libre   hacer inicio
             avanza;
       fin;
        si algun-zumbador-en-la-mochila entonces inicio
            norte;
        fin
        sino inicio
            apagate;
        fin;
        mientras derecha-bloqueada y frente-libre  hacer inicio
                avanza;
            si derecha-libre entonces inicio
                este;
                avanza;
                sur;
                avanza;
            fin;
        fin;
        mientras junto-a-zumbador hacer inicio
           este;
           avanza;
        fin;
        mientras algun-zumbador-en-la-mochila  hacer inicio
           deja-zumbador;
        fin;
   fin;
fin;
define-nueva-instruccion regresar como inicio
   mientras ningun-zumbador-en-la-mochila hacer inicio
        oeste;
      mientras frente-libre  hacer  inicio
            avanza;
      fin;
      si junto-a-zumbador entonces inicio
          norte;
      fin
      sino inicio
          este;
         mientras no-junto-a-zumbador y frente-libre hacer inicio
            avanza;
         fin;
         recoger;
      fin;
      mientras izquierda-bloqueada  y frente-libre hacer inicio
                    avanza;
            si izquierda-libre entonces inicio
                oeste;
                avanza;
                sur;
                avanza;
            fin;
      fin;
   fin;
fin;

    inicia-ejecucion

    este;
    avanza;

    recoger;

    regresar;
        apagate;
    termina-ejecucion
finalizar-programa
