iniciar-programa
define-nueva-instruccion norte como mientras no-orientado-al-norte hacer gira-izquierda;
define-nueva-instruccion sur como mientras no-orientado-al-sur hacer gira-izquierda;
define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gira-izquierda;
define-nueva-instruccion este como mientras no-orientado-al-este hacer gira-izquierda;
define-nueva-instruccion erosion como
    inicio
       mientras no-junto-a-zumbador y frente-libre hacer avanza;
       si junto-a-zumbador entonces
           inicio
               si frente-libre entonces avanza;
               si junto-a-zumbador entonces
                   inicio
                       oeste;
                       avanza;
                       norte;
                       mientras junto-a-zumbador  hacer avanza;
                       este;
                       avanza;
                       sur;
                       repetir 2 veces
                           inicio
                               si frente-libre entonces
                                   inicio
                                       avanza;
                                   fin sino
                                       inicio
                                           sur;
                                       fin;
                           fin;
                       si no-junto-a-zumbador entonces
                           inicio
                               oeste;
                               avanza;
                               norte;
                               mientras junto-a-zumbador hacer avanza;
                               sur;
                               avanza;
                               coge-zumbador;
                               este;
                               avanza;
                               norte;
                               mientras frente-libre hacer avanza;
                               deja-zumbador;
                               sur;
                               mientras frente-libre hacer avanza;
                               este;
                           fin sino
                               inicio
                                   mientras frente-libre hacer avanza;
                                   este;
                               fin;
                   fin;
           fin;
    fin;
define-nueva-instruccion termina como
    inicio
        mientras no-junto-a-zumbador y frente-libre hacer avanza;
        si junto-a-zumbador entonces
            inicio
                coge-zumbador;
                sur;
                mientras no-junto-a-zumbador hacer avanza;
                norte;
                avanza;
                deja-zumbador;
                mientras frente-libre hacer avanza;
                oeste;
            fin;
    fin;
    inicia-ejecucion
        mientras algun-zumbador-en-la-mochila hacer
            inicio
                deja-zumbador;
                este;
                si frente-libre entonces avanza;
                mientras frente-libre hacer erosion;
                norte;
                mientras frente-libre hacer avanza;
                oeste;
                mientras frente-libre hacer termina;
                sur;
                mientras frente-libre hacer avanza;
            fin;
            mientras junto-a-zumbador hacer coge-zumbador;
        apagate;
    termina-ejecucion
finalizar-programa
