iniciar-programa
    define-nueva-instruccion g(x) como repetir x veces gira-izquierda;
    define-nueva-instruccion centro_superior como inicio
        si frente-libre entonces inicio
            repetir 2 veces avanza;
            si frente-libre entonces centro_superior;
        fin;
        si frente-bloqueado y orientado-al-norte entonces g(3);
        avanza;
    fin;
    define-nueva-instruccion rellena(cuadros) como inicio
        repetir cuadros veces deja-zumbador;
        si frente-libre entonces inicio
            avanza;
            g(3);
            si frente-libre entonces inicio
                avanza;
                si no-junto-a-zumbador entonces inicio
                    g(1);
                    rellena(sucede(cuadros));
                fin sino inicio
                    g(2);
                    avanza;
                    g(1);
                    avanza;
                    si frente-libre entonces inicio
                        avanza;
                        g(2);
                        rellena(sucede(cuadros));
                    fin sino inicio
                        apagate;
                    fin;
                fin;
            fin sino inicio
                g(2);
                mientras frente-libre hacer avanza;
                g(3);
                rellena(sucede(cuadros));
            fin;
        fin sino inicio
            si derecha-libre entonces inicio
                g(2);
                mientras frente-libre hacer avanza;
                g(1);
                avanza;
                g(1);
                rellena(sucede(cuadros));
            fin sino inicio
                g(2);
                avanza;
                g(2);
                rellena(sucede(cuadros));
            fin;
        fin;
    fin;
    inicia-ejecucion
        mientras no-orientado-al-norte hacer gira-izquierda;
        centro_superior;
        g(1);
        rellena(1);
        apagate;
    termina-ejecucion
finalizar-programa
