iniciar-programa
define-nueva-instruccion gira(x) como inicio
repetir x veces gira-izquierda;
fin;
define-nueva-instruccion tomar(z) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador; tomar(sucede(z)); fin
sino inicio
mientras frente-libre hacer avanza; gira-izquierda;
mientras frente-libre hacer avanza; repetir z veces deja-zumbador;
apagate;
fin;
fin;
define-nueva-instruccion ordenar2(m) como
inicio
si frente-libre entonces inicio
avanza;  si junto-a-zumbador entonces inicio
coge-zumbador;
ordenar2(sucede(m)); fin;
si no-junto-a-zumbador entonces ordenar2(m);
fin
sino inicio
si si-es-cero(m) entonces inicio
gira(3); si frente-libre entonces avanza; gira(3);
mientras frente-libre y junto-a-zumbador hacer avanza;
gira(2); si frente-libre entonces avanza; tomar(0);
fin;
gira(3); si frente-libre entonces avanza; gira(3);
repetir m veces inicio
deja-zumbador; si frente-libre entonces avanza;
fin;
mientras junto-a-zumbador hacer avanza;
gira(3); avanza; gira(3); ordenar2(0);
fin;
fin;
define-nueva-instruccion restar(b)  como
inicio
si junto-a-zumbador entonces inicio
coge-zumbador; restar(sucede(b));
fin
sino inicio
gira(1); avanza; gira(1); avanza;
repetir b veces si junto-a-zumbador entonces coge-zumbador;
gira(2); avanza; gira(3); avanza; gira(1);
fin;
deja-zumbador; 
fin;
define-nueva-instruccion sumar(a) como inicio
si junto-a-zumbador entonces inicio
coge-zumbador; sumar(sucede(a)); fin
sino inicio
mientras no-orientado-al-este hacer gira-izquierda;
si frente-libre entonces avanza;
si junto-a-zumbador entonces inicio
gira(2); si frente-libre entonces avanza; gira(3);
avanza; repetir a veces deja-zumbador;
gira(2); avanza; gira-izquierda;
si frente-libre entonces avanza;
restar(0); coge-zumbador; sumar(0);
fin
sino inicio
gira(2); mientras frente-libre hacer avanza; gira(3); avanza; gira(3);
mientras frente-libre y junto-a-zumbador hacer avanza; gira(2);
ordenar2(0); fin;
fin;
fin;
define-nueva-instruccion ordenar(n) como
inicio
si frente-libre entonces inicio
avanza;  si junto-a-zumbador entonces inicio
coge-zumbador;
ordenar(sucede(n)); fin;
si no-junto-a-zumbador entonces ordenar(n);
fin
sino inicio
si si-es-cero(n) entonces inicio
gira(3); avanza;
sumar(0);
fin;
gira(3); si frente-libre entonces avanza; gira(3);
repetir n veces inicio
deja-zumbador; si frente-libre entonces avanza;
fin;
mientras junto-a-zumbador hacer avanza;
gira(3); avanza; gira(3); ordenar(0);
fin;
fin;
    inicia-ejecucion
    mientras no-orientado-al-este hacer gira-izquierda;
    mientras junto-a-zumbador y frente-libre hacer avanza;
    gira(2);       ordenar(0);
        apagate;
    termina-ejecucion
finalizar-programa
