iniciar-programa
define-nueva-instruccion norte como inicio mientras no-orientado-al-norte  hacer gira-izquierda;   fin;
define-nueva-instruccion sur como  inicio mientras no-orientado-al-sur  hacer gira-izquierda; fin;
define-nueva-instruccion este como  inicio  mientras no-orientado-al-este  hacer gira-izquierda; fin;
define-nueva-instruccion oeste como inicio mientras no-orientado-al-oeste  hacer gira-izquierda; fin;
define-nueva-instruccion va11 como
    inicio
        sur;
        mientras frente-libre hacer avanza;
        oeste;
        mientras frente-libre hacer avanza;
    fin;
define-nueva-instruccion buscar como
    inicio
       si no-junto-a-zumbador entonces
           inicio
               deja-zumbador;
                inicio
                   norte;
                   si junto-a-zumbador y frente-libre entonces
                       inicio
                           avanza;
                           buscar;
                           sur;
                           avanza;
                        fin;
                   sur;
                   si junto-a-zumbador y frente-libre entonces
                       inicio
                           avanza;
                           buscar;
                           norte;
                           avanza;
                       fin;
                   este;
                   si junto-a-zumbador y frente-libre entonces
                       inicio
                           avanza;
                           buscar;
                           oeste;
                           avanza;
                       fin;
                   oeste;
                   si junto-a-zumbador y frente-libre entonces
                       inicio
                           avanza;
                           buscar;
                           este;
                           avanza;
                       fin;
               fin;
               fin;
       fin;
  define-nueva-instruccion infect  como
      inicio
         mientras junto-a-zumbador y frente-libre hacer
             inicio
                 si frente-libre entonces  avanza;
                 si no-junto-a-zumbador entonces
                     inicio
                         buscar;
                         va11;
                         deja-zumbador;
                         norte;
                         infect;
                     fin;
                 si frente-bloqueado y orientado-al-norte entonces
                     inicio
                         este; si frente-libre entonces avanza; sur;
                     fin;
                 si frente-bloqueado y izquierda-libre y orientado-al-sur entonces
                     inicio
                          este; avanza; norte;
                     fin;
                 si frente-bloqueado y orientado-al-sur y izquierda-bloqueada entonces
                     inicio
                         va11;
                         coge-zumbador;
                     fin;
             fin;
      fin;
    inicia-ejecucion
            va11;
            buscar;
            norte;
            infect;
        apagate;
    termina-ejecucion
finalizar-programa
