iniciar-programa
define-nueva-instruccion gira(n) como repetir n veces gira-izquierda;
define-nueva-instruccion resta(a) como
si no si-es-cero(a) entonces
inicio
si junto-a-zumbador entonces coge-zumbador;
resta(precede(a));
fin
sino
avanza;
define-nueva-instruccion uno(a) como
si junto-a-zumbador entonces
inicio
coge-zumbador;
gira(3);
avanza;
deja-zumbador;
gira(2);
avanza;
gira(3);
uno(sucede(a));
fin
sino
inicio
avanza;
resta(a);
fin;
define-nueva-instruccion clona como
si junto-a-zumbador entonces
inicio
coge-zumbador;
gira(3);
avanza;
deja-zumbador;
gira(2);
avanza;
gira(3);
clona;
deja-zumbador;
fin;
define-nueva-instruccion checa(a) como
si junto-a-zumbador entonces
inicio
coge-zumbador;
checa(sucede(a));
deja-zumbador;
fin
sino
avanza;
define-nueva-instruccion dos(a) como
si junto-a-zumbador entonces
inicio
coge-zumbador;
dos(sucede(a));
fin
sino
inicio
avanza;
si orientado-al-sur entonces gira(2);
si junto-a-zumbador entonces
repetir a veces
inicio
checa(a);
deja-zumbador;
clona;
fin;
fin;
define-nueva-instruccion yos2(a) como
si junto-a-zumbador entonces
inicio
coge-zumbador;
yos2(a);
repetir a veces deja-zumbador;
fin;
define-nueva-instruccion yos(a) como
si junto-a-zumbador entonces
inicio
coge-zumbador;
yos(sucede(a));
fin
sino
inicio
avanza;
si junto-a-zumbador entonces yos2(a)
sino
inicio
mientras no-orientado-al-sur hacer gira(1);
mientras frente-libre hacer avanza;
gira(3);
mientras frente-libre hacer avanza;
repetir a veces deja-zumbador;
fin;
fin;
    inicia-ejecucion
    avanza;
    uno(0);
    gira(2);
    avanza;
    gira(2);
    uno(0);
    gira(3);
    avanza;
    gira(3);
    repetir 2 veces avanza;
    dos(0);
    mientras junto-a-zumbador hacer coge-zumbador;
    gira(3);
    avanza;
    gira(3);
    mientras frente-libre hacer yos(0);
        apagate;
    termina-ejecucion
finalizar-programa
