iniciar-programa
    define-nueva-instruccion media-vuelta como
        repetir 2 veces
            gira-izquierda;
    define-nueva-instruccion gira-derecha como
        repetir 3 veces
            gira-izquierda;
    define-nueva-instruccion regresa como inicio
        media-vuelta;
        avanza;
        media-vuelta;
    fin;
    define-nueva-instruccion marca como
        mientras frente-libre o izquierda-libre hacer inicio
            si no-junto-a-zumbador y frente-libre entonces
                si derecha-libre y izquierda-libre entonces
                    repetir 2 veces
                    deja-zumbador;
            si frente-libre entonces inicio
                avanza;
            fin
            sino
                si izquierda-libre entonces inicio
                    media-vuelta;
                    mientras frente-libre hacer
                        avanza;
                    gira-derecha;
                    avanza;
                    gira-derecha;
                    si frente-libre entonces
                        avanza;
                fin;
       fin;
    define-nueva-instruccion sur2 como
        si frente-libre entonces inicio
            avanza;
            sur2;
            avanza;
        fin
        sino inicio
            media-vuelta;
            avanza;
            si junto-a-zumbador entonces                                                                
                coge-zumbador;
            media-vuelta;
            avanza;
            media-vuelta;
        fin;                                                     
    define-nueva-instruccion oeste2 como
        si frente-libre entonces inicio
            avanza;
            oeste2;
            avanza;
       fin
       sino inicio
           gira-izquierda;
           sur2;
           gira-derecha;
       fin;
    define-nueva-instruccion giro2 como
        si no-orientado-al-oeste entonces inicio
            gira-izquierda;
            giro2;
            gira-derecha;
       fin
       sino inicio
           oeste2;
           media-vuelta;
       fin;
    define-nueva-instruccion sur como
        si frente-libre entonces inicio
            avanza;
            sur;
            avanza;
        fin
        sino inicio
            media-vuelta;
            avanza;
            deja-zumbador;
            media-vuelta;
            avanza;
            media-vuelta;
        fin;
    define-nueva-instruccion oeste como
        si frente-libre entonces inicio
            avanza;
            oeste;
            avanza;
       fin
       sino inicio
           gira-izquierda;
           sur;
           gira-derecha;
       fin;

    define-nueva-instruccion giro como
        si no-orientado-al-oeste entonces inicio
            gira-izquierda;
            giro;
            gira-derecha;
       fin
       sino inicio
           oeste;
           media-vuelta;
       fin;
    define-nueva-instruccion sur3 como
        si frente-libre entonces inicio
            avanza;
            sur3;
            avanza;
        fin
        sino inicio
            media-vuelta;
            avanza;
            si junto-a-zumbador entonces inicio
                coge-zumbador;
                media-vuelta;
                avanza;
                deja-zumbador;
                media-vuelta;
            fin;
        fin;
    define-nueva-instruccion oeste3 como
        si frente-libre entonces inicio
            avanza;
            oeste3;
            avanza;
       fin
       sino inicio
           gira-izquierda;
           sur3;
           gira-derecha;
       fin;

    define-nueva-instruccion checar como
        si no-orientado-al-oeste entonces inicio
            gira-izquierda;
            checar;
            gira-derecha;
       fin
       sino inicio
           oeste3;
           media-vuelta;
       fin;
    define-nueva-instruccion busca como
        repetir 4 veces inicio
            si frente-libre entonces inicio
                avanza;
                si junto-a-zumbador entonces inicio
                    coge-zumbador;
                    si junto-a-zumbador entonces inicio
                        coge-zumbador;
                        si junto-a-zumbador entonces inicio
                            repetir 2 veces
                                deja-zumbador;
                            regresa;
                        fin
                        sino inicio
                            repetir 3 veces
                                deja-zumbador;
                            busca;
                            regresa;
                        fin;
                    fin
                    sino inicio
                        deja-zumbador;
                        regresa;
                    fin;
               fin
               sino inicio
                   giro2;
                   regresa;
               fin;
          fin;
          gira-izquierda;
      fin;
    inicia-ejecucion
        mientras no-orientado-al-oeste hacer
            gira-izquierda;
        mientras frente-libre hacer
            avanza;
        gira-izquierda;
        mientras frente-libre hacer
            avanza;
        gira-izquierda;
        marca;
        mientras no-orientado-al-oeste hacer
            gira-izquierda;
        mientras frente-libre o izquierda-libre hacer inicio
            si junto-a-zumbador entonces inicio
                coge-zumbador;
                si junto-a-zumbador entonces inicio
                    coge-zumbador;
                        si junto-a-zumbador entonces inicio
                            repetir 2 veces
                                deja-zumbador;
                        fin
                        sino inicio
                            repetir 3 veces
                            deja-zumbador;
                            giro;
                            busca;
                            checar;
                        fin;
                fin
                sino
                    deja-zumbador;
            fin;
            si frente-libre entonces inicio
                avanza;
            fin
            sino
                si izquierda-libre entonces inicio
                    media-vuelta;
                    mientras frente-libre hacer
                        avanza;
                    gira-derecha;
                    avanza;
                    gira-derecha;
                    si frente-libre entonces
                        avanza;
                fin;
       fin;
        apagate;
    termina-ejecucion
finalizar-programa
