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 derecha como repetir 3 veces gira-izquierda;
define-nueva-instruccion hanssel(n) como
    inicio
       si no-junto-a-zumbador entonces
           inicio
               repetir n veces deja-zumbador;
           fin;
           derecha;
           si frente-libre entonces avanza;
           si no-junto-a-zumbador entonces
               inicio
                   hanssel(sucede(n));
               fin;
               si junto-a-zumbador entonces
                   inicio
                       repetir 2 veces gira-izquierda;
                       si frente-libre entonces avanza;
                       derecha;
                       si frente-libre entonces
                           inicio
                               avanza;
                           fin sino
                               inicio
                                   apagate;
                               fin;
                       hanssel(sucede(n));
                   fin;
    fin;
    inicia-ejecucion
        norte;
        deja-zumbador;
       si frente-libre entonces avanza;
        hanssel(2);
        apagate;
    termina-ejecucion
finalizar-programa
