iniciar-programa
define-nueva-instruccion deja-zumbadores como
    inicio
        mientras algun-zumbador-en-la-mochila hacer
            inicio
                deja-zumbador;
            fin;
    fin;
define-nueva-instruccion voltea como
    inicio
        gira-izquierda;
        gira-izquierda;
    fin;
define-nueva-instruccion ala-pared como
    inicio
        mientras frente-libre hacer
            inicio
                avanza;
            fin;
    fin;
define-nueva-instruccion orientate-al-norte como
    inicio
        mientras no-orientado-al-norte hacer
            inicio
                gira-izquierda;
            fin;
    fin;
define-nueva-instruccion orientate-al-oeste como
    inicio
        mientras no-orientado-al-oeste hacer
            inicio
                gira-izquierda;
            fin;
    fin;
define-nueva-instruccion orientate-al-sur como
    inicio
        mientras no-orientado-al-sur hacer
            inicio
                gira-izquierda;
            fin;
    fin;
define-nueva-instruccion orientate-al-este como
    inicio
        mientras no-orientado-al-este hacer
            inicio
                gira-izquierda;
            fin;
    fin;
define-nueva-instruccion coge-zumbadores como
    inicio
       mientras junto-a-zumbador hacer
        inicio
            coge-zumbador;
        fin;
    fin;
define-nueva-instruccion gira-derecha como
    inicio
        gira-izquierda;
        gira-izquierda;
        gira-izquierda;
    fin;
define-nueva-instruccion pregunta como
    inicio
        si junto-a-zumbador entonces
            inicio
               coge-zumbadores;
               mientras algun-zumbador-en-la-mochila hacer
                  inicio
                     deja-zumbador;
                     avanza;
                  fin;
               voltea;
               ala-pared;
               gira-izquierda;
               si frente-libre entonces
                   inicio
                        avanza;
                        gira-izquierda;
                        pregunta;
                   fin
               sino
                   inicio
                        orientate-al-norte;
                        ala-pared;
                        coge-zumbadores;
                        orientate-al-oeste;
                        ala-pared;
                        orientate-al-sur;
                        ala-pared;
                        voltea;
                   fin;
            fin
        sino
            inicio
                orientate-al-este;
                mientras no-junto-a-zumbador hacer
                    inicio
                        avanza;
                    fin;
                coge-zumbadores;
                voltea;
                ala-pared;
                orientate-al-norte;
            fin;
    fin;
define-nueva-instruccion acomoda como
    inicio
        si frente-libre y junto-a-zumbador entonces
            inicio
                si algun-zumbador-en-la-mochila entonces
                    inicio
                        deja-zumbador;
                    fin;
                avanza;
                acomoda;
            fin;
    fin;
define-nueva-instruccion busca-lugar como
    inicio
        si junto-a-zumbador y frente-libre entonces
            inicio
                avanza;
                busca-lugar;
            fin;
    fin;
define-nueva-instruccion atiende como
    inicio
        si junto-a-zumbador entonces
            inicio
                acomoda;
                voltea;
                ala-pared;
                si algun-zumbador-en-la-mochila entonces
                    inicio
                        si izquierda-libre entonces
                            inicio
                                gira-izquierda;
                                avanza;
                                gira-izquierda;
                                atiende;
                            fin
                        sino
                            inicio
                                voltea;
                            fin;
                    fin
                sino
                    inicio
                       gira-izquierda;
                       busca-lugar;
                       si frente-libre entonces
                           inicio
                                voltea;
                                avanza;
                           fin
                       sino
                           inicio
                                voltea;
                           fin;
                       gira-derecha;
                    fin;
            fin;
   fin;
define-nueva-instruccion re-ordena como
    inicio
        si junto-a-zumbador entonces
            inicio
                si frente-bloqueado entonces
                    inicio
                        apagate;
                    fin;
                coge-zumbador;
                si junto-a-zumbador entonces
                    inicio
                        coge-zumbadores;
                        si frente-libre entonces
                            inicio
                                avanza;
                            fin;
                        re-ordena;
                    fin
                sino
                    inicio
                        deja-zumbador;
                        si algun-zumbador-en-la-mochila entonces
                            inicio
                                gira-izquierda;
                                si frente-libre entonces
                                    inicio
                                        avanza;
                                        gira-izquierda;
                                        ala-pared;
                                        mientras algun-zumbador-en-la-mochila hacer
                                        inicio
                                            deja-zumbador;
                                        fin;
                                        gira-izquierda;
                                        avanza;
                                        gira-izquierda;
                                        mientras no-junto-a-zumbador hacer
                                        inicio
                                            avanza;
                                        fin;
                                    fin
                                sino
                                    inicio
                                        voltea;
                                        avanza;
                                        gira-derecha;
                                        mientras algun-zumbador-en-la-mochila hacer
                                        inicio
                                            deja-zumbador;
                                        fin;
                                        ala-pared;
                                        gira-derecha;
                                        avanza;
                                        gira-derecha;
                                        mientras no-junto-a-zumbador hacer
                                        inicio
                                            avanza;
                                        fin;
                                    fin
                            fin;
                        busca-lugar;
                        voltea;
                        avanza;
                        mientras frente-libre hacer
                            inicio
                                si junto-a-zumbador entonces
                                   inicio
                                        coge-zumbador;
                                   fin;
                                avanza;
                            fin;
                        deja-zumbadores;
                        gira-derecha;
                        si frente-libre entonces
                            inicio
                                avanza;
                                gira-derecha;
                            fin;
                        re-ordena;
                    fin;
            fin
        sino
            inicio
                si orientado-al-norte entonces
                    inicio
                        voltea;
                        ala-pared;
                        gira-derecha;
                        si frente-libre entonces
                            inicio
                                avanza;
                                gira-derecha;
                                re-ordena;
                            fin
                        sino
                            inicio
                                orientate-al-norte;
                                avanza;
                                deja-zumbadores;
                                voltea;
                                avanza;
                                gira-izquierda;
                            fin;
                    fin;
            fin;
    fin;
define-nueva-instruccion re-ordena-fila como
    inicio
        mientras no-junto-a-zumbador hacer
            inicio
                si frente-libre entonces
                    inicio
                        avanza;
                    fin
                sino
                    inicio
                        apagate;
                    fin;
            fin;
        mientras junto-a-zumbador hacer
            inicio
                coge-zumbador;
            fin;
        voltea;
        ala-pared;
        voltea;
        busca-lugar;
        deja-zumbadores;
        avanza;
        re-ordena-fila;
    fin;
inicia-ejecucion
si ningun-zumbador-en-la-mochila entonces
    inicio
        apagate;
    fin;
mientras junto-a-zumbador hacer
    inicio
        si frente-libre entonces
            inicio
                avanza;
            fin
        sino
            inicio
                orientate-al-norte;
                ala-pared;
            fin;
    fin;
si frente-libre entonces
    inicio
        avanza;
    fin;
deja-zumbadores;
si frente-libre y derecha-bloqueada entonces
    inicio
        voltea;
        ala-pared;
        orientate-al-norte;
    fin
sino
    inicio
        orientate-al-oeste;
        ala-pared;
        orientate-al-sur;
        ala-pared;
        voltea;
    fin;
pregunta;
atiende;
re-ordena;
re-ordena-fila;
termina-ejecucion
finalizar-programa