iniciar-programa
    define-nueva-instruccion gira(n) como repetir n veces gira-izquierda;

    define-nueva-instruccion siguienteColumna como inicio
        gira(3);
        avanza;
        gira(3);
        mientras frente-libre hacer avanza;
        gira(2);
        repetir 2 veces avanza;
    fin;

    define-nueva-instruccion buscarBeeper como inicio
        si no-junto-a-zumbador entonces inicio
            si frente-libre entonces inicio
                mientras frente-libre y no-junto-a-zumbador hacer avanza;
                buscarBeeper;
            fin sino inicio
                si derecha-libre entonces inicio
                    siguienteColumna;
                    buscarBeeper;
                fin;
            fin;
        fin;
    fin;

    define-nueva-instruccion dejar(cuantos) como inicio
        gira(1);
        mientras frente-libre hacer avanza;
        gira(1);
        mientras frente-libre hacer avanza;
        gira(1);
        mientras junto-a-zumbador hacer avanza;
        repetir cuantos veces deja-zumbador;
    fin;

    define-nueva-instruccion cuenta(cuantos) como inicio
        buscarBeeper;
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            si frente-libre entonces inicio
                avanza;
                buscarBeeper;
                cuenta(sucede(cuantos));
            fin sino inicio
                si derecha-libre entonces inicio
                    siguienteColumna;
                    cuenta(sucede(cuantos));
                fin sino inicio
                    dejar(sucede(cuantos));
                    si frente-bloqueado entonces apagate;
                    gira(2);
                    mientras frente-libre hacer avanza;
                    gira(3);
                fin;
            fin;
        fin sino inicio
            dejar(cuantos);
            si frente-bloqueado entonces apagate;
            gira(2);
            mientras frente-libre hacer avanza;
            gira(3);
        fin;
    fin;

    inicia-ejecucion
        mientras orientado-al-norte hacer inicio
            repetir 2 veces avanza;
            cuenta(0);
        fin;
    termina-ejecucion
finalizar-programa
