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

define-nueva-instruccion v1(a) como inicio
gira(3);
mientras no junto-a-zumbador hacer
avanza;
repetir 150 veces coge-zumbador;
repetir  2 veces gira-izquierda;
mientras frente-libre hacer avanza;
gira(3);
repetir a veces avanza;
gira(3);
mientras derecha-libre hacer avanza;
fin;

define-nueva-instruccion marca(z) como inicio
si derecha-bloqueada entonces inicio
avanza;
marca(z);
repetir z veces deja-zumbador;
fin sino inicio
   gira(2);
   mientras frente-libre hacer avanza;
   gira-izquierda;
   mientras frente-libre hacer avanza;
   gira-izquierda;
   mientras junto-a-zumbador hacer
   avanza;
   gira-izquierda;
   fin;
fin;

define-nueva-instruccion myd como inicio
v1(4);
marca(2);
gira(3);
avanza;
gira-izquierda;
v1(8);
marca(3);
fin;

define-nueva-instruccion acomoda como inicio
   mientras no orientado-al-oeste hacer
    gira-izquierda;
    mientras frente-libre hacer
    avanza;
     mientras no orientado-al-este hacer
    gira-izquierda;
fin;

define-nueva-instruccion compara(c) como inicio
si no si-es-cero (c) entonces inicio
    si junto-a-zumbador entonces inicio
        coge-zumbador;
        gira(2);
        avanza;
        deja-zumbador;
        gira(2);
        avanza;
        compara(precede(c));
        deja-zumbador;
    fin sino inicio
        repetir c veces deja-zumbador;
    fin;
fin;
fin;


define-nueva-instruccion come(z) como inicio
si junto-a-zumbador entonces inicio
    coge-zumbador;
    come(sucede(z));
fin sino inicio
    avanza;
    compara(z);
    mientras no orientado-al-oeste hacer
    gira-izquierda;
    avanza;
fin;
fin;

define-nueva-instruccion cuenta(b) como inicio
si junto-a-zumbador entonces inicio
    avanza;
    cuenta(sucede(b));

    repetir b veces inicio
        come(0);
        mientras no orientado-al-este hacer
        gira-izquierda;
        avanza;
    fin;
    acomoda;
fin sino inicio
    acomoda
fin;
fin;

define-nueva-instruccion f como inicio
si junto-a-zumbador entonces inicio
coge-zumbador;
f;
deja-zumbador;
fin sino inicio
gira(2);
avanza;
fin;
fin;
    inicia-ejecucion
    mientras no orientado-al-norte   hacer
    gira-izquierda;
    myd;
    gira-izquierda;
    avanza;
    gira(2);
    cuenta(0);
    mientras junto-a-zumbador hacer
    coge-zumbador;
    avanza;
    f;

        apagate;
    termina-ejecucion
finalizar-programa
