iniciar-programa
    define-nueva-instruccion cuenta(n) como inicio
   mientras  junto-a-zumbador hacer inicio

    repetir n veces inicio
    si junto-a-zumbador entonces  coge-zumbador
    sino  inicio
     mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
    fin;
    fin;


    si frente-libre entonces avanza
    sino inicio
    mientras no-orientado-al-sur hacer gira-izquierda;
   mientras frente-libre hacer avanza;
    fin;

        fin;

             fin;


           define-nueva-instruccion corta(n) como inicio
           si junto-a-zumbador entonces inicio
           coge-zumbador;
           corta(sucede(n));
           fin
           sino inicio
           mientras frente-libre y no-junto-a-zumbador hacer avanza;
           mientras no-orientado-al-este hacer gira-izquierda;
           si junto-a-zumbador entonces cuenta(n);
           fin;
            fin;

           define-nueva-instruccion recoge(n) como inicio
          si no-orientado-al-oeste entonces inicio
           si junto-a-zumbador entonces  inicio
           si frente-libre entonces inicio
           avanza;
           recoge(0);
           fin
           sino inicio
            mientras no-orientado-al-sur hacer gira-izquierda;
            si frente-libre entonces avanza;
            mientras no-orientado-al-oeste hacer gira-izquierda;
            si frente-libre entonces avanza;
               recoge(0);
                   fin;
                   fin;
                      si no-junto-a-zumbador y no-orientado-al-oeste entonces  inicio
           si frente-libre entonces inicio
           avanza;
           recoge(1);
           fin
           sino inicio
            mientras no-orientado-al-sur hacer gira-izquierda;
            si frente-libre entonces avanza;
            mientras no-orientado-al-oeste hacer gira-izquierda;
            si frente-libre entonces avanza;
               recoge(1);
                   fin;
                   fin;
                   fin ;

                   si si-es-cero(n) entonces inicio
                   si junto-a-zumbador y frente-libre  entonces  avanza;
                   fin;

                        si  si-es-cero(precede(n)) entonces inicio
                        si algun-zumbador-en-la-mochila entonces deja-zumbador;
                        fin;



                         fin;



                          define-nueva-instruccion  diles como inicio
                      mientras junto-a-zumbador hacer inicio

                      si junto-a-zumbador entonces coge-zumbador;
                      si junto-a-zumbador y frente-libre entonces avanza;

                      mientras no-junto-a-zumbador y frente-libre hacer avanza;

                      si frente-bloqueado entonces  inicio
                      mientras no-orientado-al-sur hacer gira-izquierda;
                      mientras frente-libre hacer avanza;
                      mientras no-orientado-al-oeste hacer gira-izquierda;
                      mientras frente-libre hacer avanza;
                      si algun-zumbador-en-la-mochila entonces deja-zumbador;
                      mientras no-orientado-al-norte hacer gira-izquierda;
                      repetir 4 veces inicio
                      si frente-libre entonces avanza;
                      fin;
                      mientras no-orientado-al-este hacer gira-izquierda;
                      si frente-libre y junto-a-zumbador entonces  avanza
                      sino inicio
                      mientras frente-libre y no-junto-a-zumbador hacer avanza;
                      fin;
                        fin;
                       fin;
                       fin;





    inicia-ejecucion
  mientras no-orientado-al-norte hacer gira-izquierda;
  mientras frente-libre y no-junto-a-zumbador hacer avanza;
 si junto-a-zumbador entonces  corta(0);
 mientras no-orientado-al-oeste hacer gira-izquierda;
 mientras frente-libre y no junto-a-zumbador hacer avanza;
si junto-a-zumbador entonces inicio
repetir 100 veces inicio
si junto-a-zumbador entonces  coge-zumbador;
fin;
fin;
mientras frente-libre hacer avanza;
mientras no-orientado-al-norte hacer gira-izquierda;
repetir 5 veces inicio
si frente-libre entonces  avanza;
fin;
mientras no-orientado-al-este hacer gira-izquierda;
recoge(0);
 si frente-libre entonces avanza;
 mientras no-orientado-al-este hacer gira-izquierda;
 mientras frente-libre y no-junto-a-zumbador hacer avanza;
 si junto-a-zumbador entonces diles;

     mientras no-orientado-al-sur hacer gira-izquierda;
          mientras frente-libre hacer  avanza;
            mientras no-orientado-al-oeste hacer gira-izquierda;
          mientras frente-libre hacer avanza;


        apagate;
    termina-ejecucion
finalizar-programa

