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 este como mientras no-orientado-al-este hacer gira-izquierda;
define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gira-izquierda;

define-nueva-instruccion medir como
    inicio
                deja-zumbador;
    fin;

define-nueva-instruccion gira-derecha como
    inicio
        repetir 3 veces gira-izquierda;
    fin;

 define-nueva-instruccion ir-1-1 como
     inicio
         mientras frente-libre hacer avanza;
     fin;

define-nueva-instruccion camina como
    inicio
        mientras izquierda-bloqueada y frente-libre hacer
        inicio
        avanza;
        si junto-a-zumbador y orientado-al-oeste y izquierda-bloqueada y derecha-libre entonces
            inicio
                coge-zumbador;
                si junto-a-zumbador entonces
                    inicio
                        deja-zumbador;
                        camina;
                    fin;
                mientras frente-libre hacer avanza;
                repetir 5 veces deja-zumbador;
                apagate;
                fin;
        fin;
        si izquierda-bloqueada y derecha-bloqueada y frente-bloqueado y junto-a-zumbador y orientado-al-sur entonces
            inicio
                coge-zumbador;
                repetir 5 veces deja-zumbador;
                si derecha-bloqueada y izquierda-bloqueada y frente-bloqueado y orientado-al-sur entonces
                    inicio
                        repetir 5 veces deja-zumbador;
                    fin;
                apagate;
            fin;
        si izquierda-bloqueada y frente-bloqueado entonces
            inicio
                gira-derecha;
                repetir 5 veces deja-zumbador;
                camina;
            fin;
             si derecha-bloqueada y izquierda-libre entonces
            inicio
                gira-izquierda;
                repetir 5 veces deja-zumbador;
                avanza;
                camina;
            fin;
        si derecha-libre y izquierda-libre entonces
            inicio
                repetir 5 veces deja-zumbador;
                gira-izquierda;
                avanza;
                camina;
            fin;

    fin;
define-nueva-instruccion revisa como
    inicio
    si orientado-al-sur entonces
            inicio
            gira-izquierda;
            revisa;
            fin;
    si frente-bloqueado y izquierda-bloqueada y derecha-bloqueada entonces
        inicio

            repetir 20 veces deja-zumbador;
            apagate;
        fin;
    fin;

    inicia-ejecucion

        revisa;
        medir;
        norte;
        camina;
        apagate;
    termina-ejecucion
finalizar-programa

