iniciar-programa
define-nueva-instruccion g(n) como
repetir n veces gira-izquierda;
define-nueva-instruccion siguiented como
inicio
    avanza;
    g(3);
    avanza;
    gira-izquierda;
fin;
define-nueva-instruccion siguientei como
inicio
    avanza;
    gira-izquierda;
    avanza;
    g(3);
fin;
define-nueva-instruccion checad como
inicio
    si derecha-libre y frente-libre entonces
    inicio
        siguiented;
        g(2);
        si junto-a-zumbador entonces
        inicio
            siguiented;
            g(2);
        fin
        sino
        inicio
            siguiented;
            g(2);
            apagate;
        fin;
    fin
    sino
    apagate;
fin;
define-nueva-instruccion checai como
inicio
    si izquierda-libre y frente-libre entonces
    inicio
        siguientei;
        g(2);
        si junto-a-zumbador entonces
        inicio
            siguientei;
            g(2);
        fin
        sino
        inicio
            siguientei;
            g(2);
            apagate;
        fin;
    fin
    sino
    apagate;
fin;
define-nueva-instruccion ramad como
inicio
    mientras frente-libre o frente-bloqueado hacer
    inicio
        siguiented;
        coge-zumbador;
        si junto-a-zumbador entonces
        inicio
            deja-zumbador;
            sal-de-instruccion;
        fin
        sino
        deja-zumbador;
    fin;
fin;
define-nueva-instruccion ramai como
inicio
    mientras frente-libre o frente-bloqueado hacer
    inicio
        siguientei;
        coge-zumbador;
        si junto-a-zumbador entonces
        inicio
            deja-zumbador;
            sal-de-instruccion;
        fin
        sino
        deja-zumbador;
    fin;
fin;
define-nueva-instruccion busca(n) como
inicio
    ramad;
    checad;
    si no si-es-cero (precede(n)) entonces
    busca(precede(n));
    g(2);
    ramad;
    g(2);
    ramai;
    checai;
    si no si-es-cero (precede(n)) entonces
    busca(precede(n));
    g(2);
    ramai;
    g(2);
fin;
define-nueva-instruccion rio(n) como
inicio
    busca(n);
    rio(sucede(n))
fin;
    inicia-ejecucion
    mientras no-orientado-al-norte hacer gira-izquierda;
    checad;
    checai;
    rio(1);
        apagate;
    termina-ejecucion
finalizar-programa
