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 dos como
inicio
mientras orientado-al-este hacer
inicio
si junto-a-zumbador entonces coge-zumbador;
mientras frente-libre hacer
    inicio
    avanza;
    dos;
    fin;
si frente-bloqueado entonces
    inicio
    norte;
    si frente-libre entonces
        inicio
        avanza; oeste; mientras frente-libre hacer avanza; este; dos;
        fin
    sino
        inicio
        oeste;
        mientras frente-libre hacer avanza;
        sur;
        mientras frente-libre hacer avanza;
        este;
        avanza;
        mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
        apagate;
        fin;
   fin;
fin;
fin;

define-nueva-instruccion uno como
inicio
si junto-a-zumbador entonces
    inicio
    coge-zumbador;
    si no junto-a-zumbador entonces
        inicio
        si frente-libre entonces inicio avanza; uno;
        fin
        sino
            inicio
            norte;
            si frente-libre entonces
                inicio
                avanza;
                si no-junto-a-zumbador entonces
                    inicio
                    oeste; mientras frente-libre hacer avanza; sur;
                    mientras frente-libre hacer avanza;
                    mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
                    norte; avanza; este; dos;
                    fin
               sino
                   inicio
                   oeste; mientras frente-libre hacer avanza; este; uno;
                   fin;
               fin
           sino
               inicio
               oeste; mientras frente-libre hacer avanza; sur;
               mientras frente-libre hacer avanza;
               mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
               norte; avanza; este; dos;
               fin;
           fin;
        fin
    sino
        inicio
        deja-zumbador;
        si frente-libre entonces inicio avanza; uno; fin
        sino
            inicio
            norte;
            si frente-libre entonces
                inicio
                avanza;
                si no-junto-a-zumbador entonces
                    inicio
                    oeste; mientras frente-libre hacer avanza; sur;
                    mientras frente-libre hacer avanza;
                    mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
                    norte; avanza; este; dos;
                    fin
               sino
                   inicio
                   oeste; mientras frente-libre hacer avanza; este; uno;
                   fin;
               fin
           sino
               inicio
               oeste; mientras frente-libre hacer avanza; sur;
               mientras frente-libre hacer avanza;
               mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
               norte; avanza; este; dos;
               fin;
           fin;
        fin;
   fin
sino
    si orientado-al-este entonces
        inicio
        repetir 2 veces gira-izquierda;
        avanza;
            norte;
            si frente-libre entonces
                inicio
                avanza;
                si no-junto-a-zumbador entonces
                    inicio
                    oeste; mientras frente-libre hacer avanza; sur;
                    mientras frente-libre hacer avanza;
                    mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
                    norte; avanza; este; dos;
                    fin
               sino
                   inicio
                   oeste; mientras frente-libre hacer avanza; este; uno;
                   fin;
               fin
           sino
               inicio
               oeste; mientras frente-libre hacer avanza; sur;
               mientras frente-libre hacer avanza;
               mientras algun-zumbador-en-la-mochila hacer deja-zumbador;
               norte; avanza; este; dos;
               fin;
        fin;
fin;

    inicia-ejecucion
    avanza;
    este;
    si no-junto-a-zumbador entonces apagate
    sino
    uno;

        apagate;
    termina-ejecucion
finalizar-programa
