iniciar-programa

       define-nueva-instruccion norte como inicio
          mientras no-orientado-al-norte 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 sur como inicio
           mientras no-orientado-al-sur 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 marcar como inicio
            repetir 4 veces inicio
               gira-izquierda;
               si frente-libre entonces inicio
                  avanza;
                  si no-junto-a-zumbador entonces inicio
                      (* si es orilla *)
                      gira-izquierda;
                      gira-izquierda;
                      avanza;
                      gira-izquierda;
                      gira-izquierda;

                     (* quito los que hay*)
                      mientras junto-a-zumbador hacer inicio
                         coge-zumbador;
                      fin;
                      deja-zumbador;
                      deja-zumbador;
                      deja-zumbador;
                  fin sino inicio
                      gira-izquierda;
                      gira-izquierda;

                      avanza;        
                      gira-izquierda;
                      gira-izquierda;
                  fin;
               fin sino inicio
                     (* quito los que hay*)
                      mientras junto-a-zumbador hacer inicio
                         coge-zumbador;
                      fin;
                      deja-zumbador;
                      deja-zumbador;
                      deja-zumbador;
               fin;
            fin;
            si no-junto-a-zumbador entonces inicio
               deja-zumbador;
               deja-zumbador;
            fin;
        fin;

        define-nueva-instruccion buscar como inicio
            si junto-a-zumbador entonces inicio
               coge-zumbador;
               si junto-a-zumbador entonces inicio
                  deja-zumbador;
               fin sino inicio
                  (* se mete a la busqueda*)
                  marcar; (* marca como visitado*)
                  norte;
                  si frente-libre entonces inicio
                     avanza;
                     buscar;
                     sur;
                     avanza;
                  fin;

                  este;
                  si frente-libre entonces inicio
                     avanza;
                     buscar;
                     oeste;
                     avanza;
                  fin;

                  sur;
                  si frente-libre entonces inicio
                     avanza;
                     buscar;
                     norte;
                     avanza;
                  fin;
                  oeste;
                  si frente-libre entonces inicio
                     avanza;
                     buscar;
                     este;
                     avanza;
                  fin;
               fin;
            fin;
            (* hace backtraking *)
         fin;

        define-nueva-instruccion elimina2 como inicio
            si junto-a-zumbador entonces inicio
               coge-zumbador;
               si no-junto-a-zumbador entonces inicio
                   deja-zumbador;
               fin sino inicio
                  (* se mete a la busqueda*)
                  coge-zumbador; (* marca como visitado*)
                  norte;
                  si frente-libre entonces inicio
                     avanza;
                     elimina2;
                     sur;
                     avanza;
                  fin;

                  este;      
                  si frente-libre entonces inicio
                     avanza;
                     elimina2;
                     oeste;
                     avanza;
                  fin;

                  sur;
                  si frente-libre entonces inicio
                     avanza;
                     elimina2;
                     norte;
                     avanza;
                  fin;
                  oeste;
                  si frente-libre entonces inicio
                     avanza;
                     elimina2;
                     este;
                     avanza;
                  fin;
               fin;
            fin;
            (* hace backtraking *)
         fin;



    inicia-ejecucion
           buscar;
           elimina2;
        apagate;
    termina-ejecucion
finalizar-programa

