iniciar-programa
    define-nueva-instruccion avanzar-derecha(n) como inicio
        repetir n veces inicio
            si derecha-libre entonces inicio
                repetir 3 veces gira-izquierda;
                avanza;
            fin sino inicio
                mientras frente-bloqueado hacer gira-izquierda;
                avanza;
            fin;
            si junto-a-zumbador entonces apagate;
        fin;
        repetir 2 veces gira-izquierda;
        avanza;
    fin;

    define-nueva-instruccion avanzar-izquierda(n) como inicio
        repetir n veces inicio
            si izquierda-libre entonces inicio
                gira-izquierdA;
                avanza;
            fin sino inicio
                mientras frente-bloqueado hacer repetir 3 veces gira-izquierda;
                avanza;
            fin;
            si junto-a-zumbador entonces apagate;
        fin;
        repetir 2 veces gira-izquierda;
        avanza;
    fin;

    inicia-ejecucion
        si junto-a-zumbador entonces apagate;
        mientras derecha-libre hacer gira-izquierda;
        avanzar-derecha(4);
        avanzar-izquierda(19);
        avanzar-derecha(63);
        avanzar-izquierda(175);
        avanzar-derecha(447);
        avanzar-izquierda(1087);
        avanzar-derecha(2559);
        avanzar-izquierda(5887);
        avanzar-derecha(13311);
        avanzar-izquierda(29695);
        avanzar-derecha(40959);
        apagate;
    termina-ejecucion
finalizar-programa
