iniciar-programa
define-nueva-instruccion a como si frente-libre entonces avanza;
define-nueva-instruccion gi como gira-izquierda;
define-nueva-instruccion mv como repetir 2 veces gi;
define-nueva-instruccion gd como repetir 3 veces gi;
define-nueva-instruccion sa como mientras frente-libre hacer a;
define-nueva-instruccion norte como mientras no-orientado-al-norte hacer gi;
define-nueva-instruccion oeste como mientras no-orientado-al-oeste hacer gi;
define-nueva-instruccion este como mientras no-orientado-al-este hacer gi;
define-nueva-instruccion sur como mientras no-orientado-al-sur hacer gi;
define-prototipo-instruccion piramide(x);
define-nueva-instruccion pira(x) como
inicio
    si no si-es-cero (x) entonces
        piramide(precede(x));
fin;
define-nueva-instruccion piramide(x) como
inicio
    repetir x veces
    inicio
        si no-junto-a-zumbador entonces deja-zumbador;
        a;
    fin;
    oeste;
    repetir x veces a;
    gd;
    a;
    gd;
    a;
    pira(precede(x));
fin;
define-nueva-instruccion piramido(x) como
inicio
    piramide(x);
    si algun-zumbador-en-la-mochila entonces inicio sur;
    sa;
    oeste;
    sa;
    este;
    piramido(sucede(sucede(x)));
    fin
    sino
    inicio
        mv;
        a;
        gi;
        a;
    fin;
fin;
    inicia-ejecucion
    este;
    repetir 5 veces
    inicio
        repetir 7 veces
        inicio
           si junto-a-zumbador entonces coge-zumbador;
           a;
        fin;
        gi;
        a;
        gi;
        sa;
        mv;
    fin;
    sur;
    sa;
    este;
    piramido(1);
           apagate;
    termina-ejecucion
finalizar-programa
