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 derecha como inicio
   repetir 3 veces inicio
      gira-izquierda;
    fin;
  fin;

define-nueva-instruccion ir11 como inicio
 oeste;
 mientras frente-libre hacer inicio
    avanza;
   fin;
   sur;
   mientras frente-libre hacer inicio
        avanza;
     fin;
     este;
fin;

define-nueva-instruccion deposita como inicio
   mientras algun-zumbador-en-la-mochila hacer inicio
        deja-zumbador;
     fin;
  fin;

define-nueva-instruccion siguiente como inicio
      si orientado-al-norte entonces inicio
        derecha;
         si frente-libre entonces inicio
            avanza;
            sur;
         fin;
       fin sino inicio
       si orientado-al-sur entonces inicio
          gira-izquierda;
          si frente-libre entonces inicio
           avanza;
           norte;
          fin;
        fin;
        fin;
  fin;

define-nueva-instruccion buscar como inicio
      mientras no junto-a-zumbador y no orientado-al-este  hacer inicio
      si frente-libre  entonces inicio
      avanza;
      fin sino inicio
      si no orientado-al-este entonces inicio
        siguiente;
        fin sino inicio

        fin;
       fin;
     fin;

  fin;

define-nueva-instruccion recoger como inicio
   si junto-a-zumbador entonces inicio
      coge-zumbador;
       recoger;

     fin;
     si no orientado-al-este entonces inicio
        ir11;
        fin sino inicio
        avanza;
         fin;
       fin;

    inicia-ejecucion
    norte;
            mientras frente-libre hacer inicio
            norte;
            avanza;
              buscar;
              si junto-a-zumbador entonces inicio
               recoger;
               si junto-a-zumbador entonces inicio
                      mientras junto-a-zumbador hacer inicio
                         coge-zumbador;
                        fin;
                        ir11;
                        deposita;
                fin sino inicio
                     deposita;
                     ir11;
                 fin;
               fin;

              fin;

            ir11;
            mientras junto-a-zumbador hacer inicio
              coge-zumbador;
             fin;
                norte;
                avanza;
                deposita;
                sur;
                avanza;
                 este;
                 mientras frente-libre hacer inicio
                    si frente-libre entonces inicio
                      avanza;
                      fin;
                      si junto-a-zumbador entonces inicio
                         coge-zumbador;
                       fin;
                   fin;
                   ir11;
                   deposita;

        apagate;
    termina-ejecucion
finalizar-programa
