iniciar-programa
define-nueva-instruccion g(m) como inicio
    repetir m veces gira-izquierda;
fin;

define-nueva-instruccion x(n) como inicio
    si frente-libre y orientado-al-este entonces inicio
       avanza;
       x(sucede(n));
    fin
    sino inicio
        si izquierda-libre entonces inicio
            g(1);
            mientras derecha-bloqueada y frente-libre hacer avanza;
            si derecha-libre entonces inicio
                g(3);
                avanza;
                g(3);
                mientras frente-libre hacer avanza;
                g(1);
                x(sucede(n));
            fin
            sino inicio
                g(2);
                mientras frente-libre hacer avanza;
                g(3);
                x(n);
            fin;

        fin
        sino inicio
            si orientado-al-este y frente-bloqueado entonces g(2);
            si no si-es-cero (n) entonces inicio
                si frente-libre entonces inicio
                    avanza;
                    x(precede(precede(n)));
                fin
                sino inicio
                    si derecha-libre entonces inicio
                        g(3);
                        mientras izquierda-bloqueada hacer avanza;
                        g(1);
                        si frente-libre entonces inicio
                            avanza;
                        fin
                        sino inicio
                            g(1);
                            mientras frente-libre hacer avanza;
                            g(3);
                            x(precede(precede(n)));
                        fin;
                        g(1);
                        mientras frente-libre hacer avanza;
                        g(3);
                        x(precede(precede(n)));
                    fin
                    sino inicio
                        apagate;

                    fin;
                fin;
            fin;

        fin;
    fin;

fin;
    inicia-ejecucion
    mientras no orientado-al-este hacer gira-izquierda;
    x(0);
        apagate;
    termina-ejecucion
finalizar-programa
