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

    define-nueva-instruccion final(final) como inicio
        si frente-libre entonces inicio
            avanza;
            final(sucede(final));
        fin sino inicio
            gira(1);
            mientras junto-a-zumbador hacer coge-zumbador;
            repetir final veces deja-zumbador;
            apagate;
        fin;
    fin;

    define-nueva-instruccion punk(punk) como inicio
        si junto-a-zumbador entonces inicio
            coge-zumbador;
            punk(sucede(punk));
        fin sino inicio
            gira(2);
            si no junto-a-zumbador entonces inicio
                repetir punk veces inicio
                    avanza;
                fin;
                repetir punk veces deja-zumbador;
                avanza;
                mientras no-junto-a-zumbador y frente-libre hacer avanza;
                gira(2);
                avanza;
            fin sino inicio
            fin;
        fin;
    fin;

    define-nueva-instruccion ponk(ponk) Como Inicio
        Si Junto-a-zumbador Entonces Inicio
            coge-zumbador;
            ponk(sucede(ponk));
        Fin Sino INICIO
            gira(3);
            mientras no-junto-a-zumbador hacer inicio
                repetir ponk veces inicio
                    avanza;
                fin;
                si no-junto-a-zumbador entonces inicio
                    deja-zumbador;
                    avanza;
                    mientras no-junto-a-zumbador y frente-libre hacer avanza;
                    punk(0);
                fin sino inicio
                    GIRA(2);
                    final(1);
                fin;
            fin;
            gira(2);
            final(1);
        Fin;
    FIN;

    inicia-ejecucion
        coge-zumbador;

        ponk(0);
        apagate;
    termina-ejecucion
finalizar-programa
